GitHub修煉法則:第一次提交代碼教學(Liunx系統)

前言

github是廣大程序員們必須要掌握的一個技能,萬事開頭難,如果成功提交了第一次代碼,那么后來就會簡單很多。網上的相關資料往往都不是從第一次開始,導致很多新手們會在過程中遇到很多權限認證相關的問題,進而被卡住。為了解決這些問題,我整理了github第一次提交的教程,希望可以幫助大家掌握github的使用。
需要的環境:
VS code編輯環境。
WMware虛擬機與ubuntu系統。

這里我通過將我們本地寫的一個項目ChatServer上傳到github倉庫來帶領大家學習github的使用。

配置環境

1、安裝git工具

對于一個新的ubuntu環境,先需要安裝git工具,運行下面的指令:

hyl@hylPC:~/Desktop/Chat$ sudo apt install git
[sudo] password for hyl: 

2、創建倉庫

在github網站上創建一個倉庫,這個操作過于基礎,不做過多講解了。
在這里插入圖片描述

3、克隆倉庫

首先需要倉庫的地址,如下圖所示進入到剛剛創建的倉庫中,復制圖中的網址。在這里插入圖片描述接下來切換到我們項目的目錄下,我這里是:~/Desktop/Chat,輸入下面的指令進行克隆倉庫:

hyl@hylPC:~/Desktop/Chat$ git clone https://github.com/MrDavid615/ChatServer.git

在這里插入圖片描述
如上圖所示,克隆后本地目錄下會出現一個ChatServer文件夾,這取決于你的倉庫的名字,這里文件夾就是一個github的倉庫,在該文件夾下會有一個隱藏文件.git。在其他的文件夾下運行git類指令是無法運行的(git clone除外),類似于git pullgit push等指令都要在git倉庫對應的文件夾下運行,因為這些倉庫里面有.git這個隱藏文件。
這樣我們就成功在本地克隆了一個github倉庫。

代碼提交

1、在ChatServer內進行開發

現在我們的代碼都是在本地電腦上,不在倉庫中,因此我們需要把本地的文件移動到ChatServer文件夾中。假設我們是在ChatServer目錄下進行的開發。大家可以直接使用光標在VS Code左側的目錄樹下操作文件,我這里用命令行的方式都是一樣的。

hyl@hylPC:~/Desktop/Chat$ mv bin/ ChatServer/
hyl@hylPC:~/Desktop/Chat$ mv build ChatServer
hyl@hylPC:~/Desktop/Chat$ mv include/ ChatServer/
hyl@hylPC:~/Desktop/Chat$ mv src/ ChatServer/
hyl@hylPC:~/Desktop/Chat$ mv thirdparty/ ChatServer/
hyl@hylPC:~/Desktop/Chat$ mv test/ ChatServer/
hyl@hylPC:~/Desktop/Chat$ mv CMakeLists.txt  ChatServer/
hyl@hylPC:~/Desktop/Chat$ ls
ChatServer

這個操作實際上就是對我們倉庫內的代碼進行了一個修改(可以認為這些代碼都是在ChatServer下編寫的),之后我們繼續開發都在ChatServer文件夾下,就不需要移動文件夾了。
執行完上面的操作后,我們本地的倉庫與遠程的倉庫就會出現差異。

2、跟蹤修改

我們切換到ChatServer下,輸入git status指令與git add .指令(上面講過了,除git clone外的其他指令要在在git倉庫下才能運行)

hyl@hylPC:~/Desktop/Chat/ChatServer$ git status
On branch main
Your branch is up to date with 'origin/main'.Untracked files:(use "git add <file>..." to include in what will be committed)CMakeLists.txtbuild/include/src/test/thirdparty/nothing added to commit but untracked files present (use "git add" to track)
hyl@hylPC:~/Desktop/Chat/ChatServer$ git add .
# git add .指令的輸出省略

這里顯示了我們當前的本地倉庫與遠程倉庫所有的文件上的差異,因為我們剛剛在本地修改了ChatServer的內容(增加了一些文件),遠程沒有同步。因此我們需要使用git add .指令將我們的修改增加到暫存區。
這里git add后面跟的是一個路徑,后面跟一個“”表示將當前目錄內的所有修改都加入暫存區。通過后面指定具體目錄,我們可以選擇需要加入暫存區的文件的范圍。比如我輸入git add ./build/就表示將當前目錄下的build子目錄下的文件加入暫存區。

3、提交修改

接下來將代碼提交,輸入git commit -m "your descrip" ,引號內為這次提交的文字描述,沒有格式要求,隨便寫一些文字來描述這次提交的改動。對與第一次提交的同學,走到這一步可能出現問題。

hyl@hylPC:~/Desktop/Chat/ChatServer$ git commit -m "ChatServer 1.0 附帶服務器端所有源代碼"
Author identity unknown*** Please tell me who you are.Rungit config --global user.email "you@example.com"git config --global user.name "Your Name"to set your account's default identity.
Omit --global to set the identity only in this repository.fatal: unable to auto-detect email address (got 'hyl@hylPC.(none)')

上面的問題主要是沒有配置當前的用戶與郵箱,因此需要進行配置,輸入git config ...注意這里的郵箱和用戶名其實只是一個標識符,沒有實際意義

hyl@hylPC:~/Desktop/Chat/ChatServer$ git config user.email "hyl@hyl.com"
hyl@hylPC:~/Desktop/Chat/ChatServer$ git config user.name "hyl"

重新提交:

hyl@hylPC:~/Desktop/Chat/ChatServer$ git commit -m "ChatServer 1.0 附帶服務器端所有源代碼"
[main 4e741ec] ChatServer 1.0 附帶服務器端所有源代碼61 files changed, 47062 insertions(+)create mode 100644 CMakeLists.txt# 。。。省略create mode 100644 thirdparty/json.hpp

4、推送代碼

走到這一步后,我們遠程的倉庫還沒有實際的修改,想要改變遠程倉庫,我們需要輸入最后一個指令git push。對于第一次操作的朋友,這里一定需要進行身份認證,這里有兩種方法:TokenSSH,推薦使用SSH,如何配置我在下面有詳細的講述。

hyl@hylPC:~/Desktop/Chat/ChatServer$ git push
Username for 'https://github.com': 

驗證身份后再次運行git push即可。

解決身份驗證問題

SSH

1、回到git hub網頁,點擊右上角頭像,點擊Settings,進入下圖頁面
在這里插入圖片描述
2、點擊后進入這里,需要輸入一個密鑰(這里圖片標準不準確,應該是填入我們復制的公鑰,懶得改了)
在這里插入圖片描述
3、我們需要生成這個密鑰。終端輸入如下指令,這里的郵箱是剛剛我們設置的那個虛假的郵箱,之后瘋狂回車,會生成一個密鑰文件存儲在路徑/home/hyl/.ssh/id_rsa

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"# 下面是指令的輸出,有省略,不一樣不要慌
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hyl/.ssh/id_rsa): 

4、前往路徑下,可以看到一個.pub后綴的文件,里面的文本對應公鑰:

hyl@hylPC:~/Desktop/Chat/ChatServer$ cd /home/hyl/.ssh/
hyl@hylPC:~/.ssh$ ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts  known_hosts.old

5、使用cat查看內容并復制.pub文件的內容(公鑰很長,這里有省略)

hyl@hylPC:~/.ssh$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2....ZrNAK+jiEqoQ== hyl@hyl.com

6、把復制的文本填入(這里圖片標準不準確,應該是填入我們復制的公鑰,懶得改了)
在這里插入圖片描述
7、需要切換到ssh推送模式,由于之前克隆時用的是HTTPS方式來獲取倉庫網址,這里使用SSH需要修改一下倉庫的網址,在終端輸入:

git remote set-url origin git@github.com:MrDavid615/ChatServer.git

這里的網址用下圖下圖的方式獲取:
在這里插入圖片描述
8、檢測ssh配置狀態,輸入指令后狂按回車,最后會顯示出最下面一行文字證明配置成功

hyl@hylPC:~/.ssh$ ssh -T git@github.com
# 下面是輸出
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256....4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes(這里輸入yes)
Warning: Permanently added 'github.com,20.205.243.166' (ED25519) to the list of known hosts.
Hi hyl! You've successfully authenticated, but GitHub does not provide shell access

9、可以推送代碼了!

Token

使用令牌的方式進行驗證很不穩定,而且經常遇到令牌過期的問題,推薦大家使用SSH方法,這里就先不講Token了,有時間再更新
(未完待續)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81844.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81844.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81844.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

瀝青路面裂縫的目標檢測與圖像分類任務

文章題目是《A grid‐based classification and box‐based detection fusion model for asphalt pavement crack》 于2023年發表在《Computer‐Aided Civil and Infrastructure Engineering》 論文采用了一種基于網格分類和基于框的檢測&#xff08;GCBD&#xff09;&#xff…

【Flask】ORM模型以及數據庫遷移的兩種方法(flask-migrate、Alembic)

ORM模型 在Flask中&#xff0c;ORM&#xff08;Object-Relational Mapping&#xff0c;對象關系映射&#xff09;模型是指使用面向對象的方式來操作數據庫的編程技術。它允許開發者使用Python類和對象來操作數據庫&#xff0c;而不需要直接編寫SQL語句。 核心概念 1. ORM模型…

C/C++滑動窗口算法深度解析與實戰指南

C/C滑動窗口算法深度解析與實戰指南 引言 滑動窗口算法是解決數組/字符串連續子序列問題的利器&#xff0c;通過動態調整窗口邊界&#xff0c;將暴力解法的O(n)時間復雜度優化至O(n)。本文將系統講解滑動窗口的核心原理、C/C實現技巧及經典應用場景&#xff0c;助您掌握這一高…

Vuex使用指南:狀態管理

一、什么是狀態管理&#xff1f;為什么需要 Vuex&#xff1f; 1. 狀態管理的基本概念 在 Vue 應用中&#xff0c;狀態指的是應用中的數據。例如&#xff1a; 用戶登錄狀態購物車中的商品文章列表的分頁信息 狀態管理就是對這些數據的創建、讀取、更新和刪除進行有效管理。 …

【信息系統項目管理師-論文真題】2007下半年論文詳解(包括解題思路和寫作要點)

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 試題1:大型項目的計劃與監控1、寫作要點2、解題思路大型信息系統項目的組織制訂大型信息系統項目進度計劃的方法試題2:組織級項目管理的績效考核1、寫作要點2、解題思路在項目考核過程中會遇到哪些問題項目的…

項目管理學習-CSPM(1)

01引言 最近在學習CSPM的課程&#xff0c;有部分的內容自己還是受益匪淺的&#xff0c;建議有需要提升項目管理能力的同學可以以考促學的方式進行學習&#xff0c;下面整理了一部分內容和大家分享和學習。CSPM全稱 China Standards Project Management&#xff0c;中文名項目管…

介紹分治、動態規劃、回溯分別是什么?有什么聯系和區別?給出對象的場景和java代碼?

一、分治算法&#xff08;Divide and Conquer&#xff09; 概念&#xff1a; 分治算法是將一個復雜問題分成若干個子問題&#xff0c;每個子問題結構與原問題類似&#xff0c;然后遞歸地解決這些子問題&#xff0c;最后將子問題的結果合并得到原問題的解。 特點&#xff1a;…

解鎖DeepSeek模型微調:從小白到高手的進階之路

目錄 一、DeepSeek 模型初相識二、探秘微調原理2.1 遷移學習基礎2.2 微調的參數更新機制 三、數據準備3.1 數據收集3.2 數據標注3.3 數據預處理 四、模型選擇與加載4.1 選擇合適的預訓練模型4.2 加載模型 五、微調訓練實戰5.1 確定微調策略5.2 設置訓練參數5.3 訓練過程 六、模…

端到端觀測分析:從前端負載均衡到后端服務

前言 我們在做系統運維保障的時候&#xff0c;關注從前端負載均衡到后端服務的流量情況是很有必要的&#xff0c;可以了解每個后端服務實例接收的流量大小&#xff0c;這有助于確定資源分配是否合理&#xff0c;能夠幫助找出后端服務中的性能瓶頸。同時&#xff0c;當系統出現…

Ubuntu下OCC7.9+Qt5 快速搭建3D可視化框架

Ubuntu下OCC7.9+Qt5搭建簡易的項目框架 近兩年國產CAD替代如日中天,而幾何內核作為CAD軟件的核心組件之一,當前有且僅有唯一開源的幾何內核庫即OCCT;這里為各位自立于投入CAD開發或正在學習OCC庫的小伙伴們奉獻上一個快速搭建QT+OCC的項目框架; 本文介紹了Qt5+Occ 顯示幾何…

C++類與對象—下:夯實面向對象編程的階梯

9. 賦值運算符重載 9.1 運算符重載 在 C 里&#xff0c;運算符重載能夠讓自定義類型的對象像內置類型那樣使用運算符&#xff0c;這極大地提升了代碼的可讀性與可維護性。運算符重載本質上是一種特殊的函數&#xff0c;其函數名是 operator 加上要重載的運算符。 下面是運算…

【深度學習-Day 6】掌握 NumPy:ndarray 創建、索引、運算與性能優化指南

Langchain系列文章目錄 01-玩轉LangChain&#xff1a;從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊&#xff1a;四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain&#xff1a;從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

工程師 - 汽車分類

歐洲和中國按字母對汽車分類&#xff1a; **軸距**&#xff1a;簡單來說&#xff0c;就是前輪中心點到后輪中心點之間的距離&#xff0c;也就是前輪軸和后輪軸之間的長度。根據軸距的大小&#xff0c;國際上通常把轎車分為以下幾類&#xff08;德國大眾汽車習慣用A\B\C\D分類&a…

[低代碼 + AI] 明道云與 Dify 的三種融合實踐方式詳解

隨著低代碼平臺和大語言模型工具的不斷發展,將企業數據與智能交互能力融合,成為提高辦公效率與自動化水平的關鍵一步。明道云作為一款成熟的低代碼平臺,Dify 則是一個支持自定義工作流的開源 LLM 應用框架。兩者結合,可以實現靈活、高效的智能化業務處理。 本文將詳解明道…

鼠標懸浮特效:常見6種背景類懸浮特效

鼠標懸浮特效&#xff1a;常見6種背景類懸浮特效 前言背景閃現效果預覽代碼展示 元素陰影效果預覽代碼展示 元素懸浮陰影效果預覽代碼展示 元素上浮陰影效果預覽代碼展示 元素邊框陰影效果預覽代碼展示 元素卷角效果預覽代碼展示 結語 前言 在之前的文章中&#xff0c;我們介紹…

[人機交互]理解與概念化交互

零.本章重點&#xff08;理解和分析用戶問題&#xff09; – 解釋“問題空間”的概念和含義 – 解釋如何概念化交互 – 描述什么是概念模型 – 討論將界面隱喻作為概念模型的利弊 – 討論界面具體化和抽象化各自的優缺點 – 概述概念設計和實際設計的關系 一.理解問題空間 簡單…

9.城市基礎設施更新工程

9.1 道路改造施工 9.1.1 道路改造施工內容 瀝青、水泥混凝土、砌塊路面、人行步道、綠化照明、附屬設施、交通標志、瀝青路面材料的再生利用 9.1.2 道路改造施工技術 1.瀝青路面病害及微表處理 1.病害處理 裂縫處理 10mm以內專業灌縫材料或熱瀝青灌縫、潮濕時乳化瀝青灌封…

Milvus(11):動態字段、可歸零和默認值

1 動態字段 Collections 的 Schema 中定義的所有字段都必須包含在要插入的實體中。如果希望某些字段是可選的&#xff0c;可以考慮啟用動態字段。 1.1 概述 在 Milvus 中&#xff0c;可以通過設置 Collections 中每個字段的名稱和數據類型來創建 Collections Schema。向 Schem…

LeetCode41?缺失的第一個正數

關聯LeetCode題號41 本題特點 數組&#xff0c;哈希表 本題思路 找缺失的最小正數&#xff0c;看舉例說明缺失的正數&#xff0c;一種情況是連續的最小的正數&#xff0c;一種是缺失連續但不是最小的正數驗證數組內數組是否連續&#xff0c;可以通過 nums[i]1 是否存nums組…

補題( Convolution, 二維卷積求輸出矩陣元素和最大值)

來源&#xff1a;https://codeforces.com/gym/105231/problem/H 題目描述&#xff1a; 一、題目分析 本題涉及深度學習中的二維卷積操作。給定一個nm的二維輸入矩陣I和一個kl的核矩陣K &#xff0c;通過特定公式計算得到(n - k 1)(m - l 1)的輸出矩陣O &#xff0c;要求在…