Wiki
Git實操
本文由簡體中文內容確定性轉換,並受版本化術語表保護。
1.環境準備
-
作業系統: Linux,Windows,MacOS(本文以Linux為教程)
-
安裝Git
sudo apt-get update
sudo apt-get install git
git --version

2.常用指令介紹
2.1.Linux建立目錄&&並進入目錄
mkdir -p hellogit
cd hellogit

2.2.設定git的使用者與郵箱(必須設定!!!)
git config --global user.name "tungchiahui"
git config --global user.email tungchiahui@gmail.com
2.3.git初始化(使該資料夾被git控制)
git init

2.4.建立檔案&&檢視當前資料夾內的所有檔案
touch test.md
ls

2.5.編輯檔案文本內容
sudo apt-get update
sudo apt-get install vim
vim ./test.md

接下來按鍵盤上的insert按鍵進入編輯模式&&並輸入一段文本

按ESC退出編輯模式

按shift+冒號按鍵,並輸入wq回車進行儲存退出

2.6.查詢當前檔案的狀態
git status

On branch 分支名
Untracked是指檔案在工作區
2.7.將檔案提交到暫存區
git add test.md

2.8.將檔案提交至本地倉庫
git commit -m "version1"
#git commit -m "提交的信息(可以理解为是注释)"

2.9.檢視已經提交的專案版本
git log

這幾行的意思是tungchiahui(郵箱為tungchiahui@gmail.com)使用者於2023年12月30日週六00:42:47往master分支提交了註解為"version1"的專案版本
2.10.可以嘗試對檔案內容進行修改,並再次進行提交
vim test.md
git add test.md
git commit -m "version2"
git log


2.11.如何忽略掉不想提交的檔案
-
首先建立一個檔案.gitignore
-
再建立一個檔案 絕密檔案不想開源.py 並修改裡面的內容
-
檢視git狀態
touch .gitignore
touch vinci_secret.py
vim vinci_secret.py
git status


- 修改.gitignore的內容,將不想被提交的檔名寫入該檔案
vim .gitignore
git status


2.12.分支基本操作
-
分支的作用:開闢專案的一個新倉庫分支,與master等其他分支是獨立的,可以進行獨立的add、commit和diff、clone。
-
建立分支
git branch route2
#git branch 分支名
- 進入分支
git checkout route2
#git checkout 分支名
- 查詢有多少分支,並查詢目前為哪一個分支
git branch

當前分支檔案會完美繼承master分支的檔案
- 刪除掉該分支下的檔案
ls
rm -rf test.md
rm -rf vinci_secret.py
ls

- 將該分支往本地倉庫進行提交
git commit -a -m "删库跑路"
#该指令是把git add和git commit指令一起写

- 檢視分支是否對其他分支有影響(切換到其他分支檢視影響)
git checkout master
ls

可以發現,在route2分支中被刪掉的test.md檔案回來了,但是同樣被刪掉的vinci_sercet.py檔案沒回來,是因為該檔案在提交時被.gitignore檔案遮蔽了,不會被提交到本地倉庫
- 刪除分支
git branch -D route2
#git branch -D 分支名

- 建立分支並立馬切換到分支
git checkout -b route3

2.13.分支的合併
- 在route3分支中修改檔案內容並提交
vim test.md
git commit -am "route3 version3"
#-a -m也可以被省略成-am


- 切換到master分支
git checkout master
vim test.md

- 將route3分支合併到當前分支上
git merge route3
#git merge 被合并的分支名
vim test.md


2.14.分支合併的衝突
- 為master新增一行內容,並提交
vim test.md
git commit -am "master version4"


- 切換到route3分支,並新增內容並提交
git checkout route3
vim test.md
git commit -am "route3 version4"


- 合併分支
git merge master

發生了內容衝突,需要手動修改文本衝突才可以!或者其他辦法也可以解決,可以查詢百度。
2.15.遠端倉庫Github
-
開啟github官網:https://github.com(如果你打不開,請自己找辦法開啟)
-
註冊並登入賬號

- 新建遠端倉庫


這個介面建議詳細設定一下,但這裡是演示,所以只設置了倉庫名稱,其他選項為預設操作。

如果上圖出現,則說明已經建立成功了
- 進行建立檔案並提交


填寫好檔名,檔案內容,就可以點綠色按鈕進行提交了。然後也可以填寫提交的註釋資訊。


- 克隆遠端倉庫到本地

cd
mkdir repo_floder
cd repo_floder
git clone https://github.com/tungchiahui/test_repo.git

如果出錯,請檢查是否能正常訪問github!


- 對檔案內容進行修改
cd test_repo
vim test1.md



- 檢視該本地倉庫與哪些遠端倉庫有聯絡
git remote -v

- 將本地倉庫push到遠端倉庫
git push

這裡需要你輸入github的使用者名稱與密碼,使用者名稱則為github使用者名稱,但是密碼則為github使用者token,生成token的步驟如下:




Note隨便填,有效日期選擇沒有截止時間。
下面能勾的勾全勾上,這是許可權。

複製token並填入password中(token在終端中輸入會被隱藏,輸完直接回車即可)

- 檢視遠端倉庫

發現檔案已經被修改了!
- 對遠端倉庫內容進行修改

- 將遠端倉庫內容拉到本地倉庫
git fetch

- 檢視本地與遠端倉庫區別
git diff origin/main
#git diff 远程仓库名/分支名

- 如果發現內容沒問題,就可以將遠端倉庫內容同步到工作區
git pull

- 檢視專案修改歷史
git log

2.16.使用Pull Request合併程式碼
Pull Request簡稱PR,用於請求將一個分支中的修改合併到另一個分支。PR可以讓專案成員在合併前檢視程式碼變化、留言討論和進行審查,因此團隊協作時通常不會直接將未審查的程式碼push到main分支。
- 從main分支建立並進入一個功能分支
git checkout main
git pull origin main
git checkout -b feature/pr-demo
feature/pr-demo是本次示例的分支名,實際開發時應使用能表達修改內容的名稱。
- 修改檔案並提交到本地倉庫
vim test1.md
按下insert按鍵,然後隨便輸入點正文.
例如
TEST11111

然後按下ESC,再輸入:wq進行儲存.
git add test1.md
git commit -m "修改test1文件"
- 將功能分支推送到Github
git push -u origin feature/pr-demo
-u會建立本地分支與遠端分支的跟蹤關係,之後在該分支上可以直接使用git push。

- 在Github倉庫頁面建立PR
推送新分支後,Github倉庫頁面通常會顯示Compare & pull request按鈕,點選該按鈕。如果沒有顯示,也可以進入倉庫的Pull requests頁面,點選New pull request。

確認兩個分支選擇正確:
base: main:修改最終要合併到的目標分支。compare: feature/pr-demo:包含本次修改的來源分支。
PR只能在兩個不同的分支之間建立。確認下方顯示的提交和檔案變化沒有問題後,填寫PR標題和說明,再點選Create pull request。

- 審查並繼續修改PR
建立PR後,可以在Files changed頁面檢視本次修改,也可以邀請其他專案成員進行Review。


如果審查後需要繼續修改,不需要重新建立PR。只需在同一個功能分支上繼續提交併push,新的提交會自動加入當前PR。
vim test1.md
按下insert按鍵,然後修改下正文.
例如
TEST222

然後按下ESC,再輸入:wq進行儲存.
git add test1.md
git commit -m "根据Review意见修改"
git push
你會發現又多了一個commit如下圖.

點選Files changed頁面檢視本次修改:

- 合併PR
審查通過且程式碼沒有衝突時,擁有倉庫寫入許可權的成員可以點選Merge pull request,再點選Confirm merge完成合並。倉庫如果設定了審查或自動測試規則,需要先滿足這些條件才能合併。


- 同步main分支並刪除已合併的分支
合併成功後,可以在PR頁面點選Delete branch刪除Github上的功能分支。然後返回終端,更新本地main分支並刪除本地功能分支。


git checkout main
git pull origin main
git branch -d feature/pr-demo

2.17.向沒有寫入許可權的倉庫提交PR
如果想向其他人的開源專案貢獻程式碼,通常沒有許可權直接將分支push到對方的倉庫。此時需要先在Github上點選Fork,將該倉庫複製到自己的賬號下。
Fork完成後,克隆自己的倉庫並記錄原倉庫地址:
git clone https://github.com/你的Github用户名/仓库名.git
cd 仓库名
git remote add upstream https://github.com/原仓库用户名/仓库名.git
git remote -v
其中origin指向自己Fork出來的倉庫,upstream指向原倉庫。接下來仍然需要建立功能分支,不要直接在main分支上修改。
git checkout -b feature/pr-demo
# 修改文件后提交
git add .
git commit -m "添加示例功能"
git push -u origin feature/pr-demo
推送後在Github上建立PR,並特別確認:
base repository是對方的原倉庫,base是對方要接收修改的分支。head repository是自己Fork的倉庫,compare是自己剛剛推送的功能分支。
之後填寫標題和修改說明,點選Create pull request即可向原專案提交PR。
3.VScode + Git
3.1.VScode是什麼?
VScode是一個文本編輯器,類似於Vim等編輯器,但是他有圖形介面,有非常多的好用的外掛,而且可以整合編譯器環境,最終也可以被使用者自定義配置成Visual Studio那樣的IDE。
3.2.VScode官網:
https://code.visualstudio.com/
3.3.建立資料夾並在該資料夾下開啟VScode

3.4.新建檔案


3.5.初始化Git(類似於git init命令)


U是指未追蹤狀態,也就是檔案還在工作區
3.6.將檔案提交到暫存區(類似git add)

3.7.取消提交到暫存區點減號(這裡不取消)

A是added表示在暫存區
3.8.進行提交(類似於commit)

輸入提交資訊,並點對號進行commit
3.9.建立新分支,並進入新分支


3.10.修改內容

顯示M為修改狀態
3.11.檢視歷史版本對比(點選檔案)

3.12.提交

3.13.切換回main分支


3.14.合併分支



3.15.Push到Github遠端倉庫
- 在下面這個介面找到
Publish to Github,可能會彈出來點選Sign In,然後按提示在瀏覽器中完成Github授權。

- 輸入倉庫名


- 開啟github倉庫檢視


3.16.使用VScode圖形化提交Pull Request
本節演示如何使用VScode建立、審查和合並Pull Request,整個過程不需要在終端輸入Git指令。
注意:如果要使用Pull Request,功能分支提交完成後不要執行上文的“切換回main分支”和“合併分支”操作。應當將功能分支保持獨立,通過PR審查後再合併到main分支。
- 安裝Github Pull Requests擴充套件
開啟VScode左側的擴充套件頁面,搜尋GitHub Pull Requests,安裝由Github釋出的GitHub Pull Requests擴充套件。

- 從main建立功能分支
先點選VScode左下角的當前分支名,切換到main分支。在原始碼管理頁面點選選擇Pull,保證本地main分支與Github上的內容一致。


再次點選左下角的分支名,選擇Create new branch from...,選擇main作為起點,然後輸入一個能表達修改內容的分支名,例如feature/pr-demo。建立後VScode會自動切換到該分支。





- 修改檔案並提交
在功能分支中修改檔案並儲存,然後開啟原始碼管理頁面:

- 點選檔案右側的
+,將修改加入暫存區。 - 在上方輸入提交資訊,例如
Add PR demo。 - 點選
Commit完成本地提交。


commit後變為

- 在VScode中建立PR
開啟左側的Github Pull Requests頁面,點選Create Pull Request。也可以按Ctrl+Shift+P開啟命令面板,執行GitHub Pull Requests: Create Pull Request。

- 填寫PR資訊
在Create Pull Request頁面中檢查以下內容:
Base Repository:接收修改的Github倉庫。Base Branch:要合併進入的目標分支,通常為main。- 來源分支:當前的功能分支,例如
feature/pr-demo。 Title:簡潔描述本次修改。Description:說明修改原因、主要內容和驗證方法。
也可以根據需要新增Reviewers、Assignees和Labels。檢查無誤後點擊Create提交PR;如果修改還沒有完成,可以選擇Create Draft建立草稿PR。

如果當前分支還沒有推送到Github,VScode會提示釋出分支。選擇publish branch即可將當前功能分支推送到遠端倉庫。

- 審查並修改PR
建立成功後,VScode會進入PR的Review Mode。在這裡可以檢視提交記錄和檔案差異、留言、邀請審查,也可以繼續修改程式碼。
可以檢視合併差異:


如果需要根據審查意見修改程式碼,保持在當前功能分支上,然後繼續使用原始碼管理頁面進行Commit.也就是可以繼續修改.

同樣先add再commit本次修改,可以命名為Add PR demo2.

最後Push。新的提交會自動加入當前PR,不需要重新建立PR。

可以看到如圖,兩次commit都被PR包含了.

也可以看到檔案差異裡,兩次提交都被可以被合併到main了.

- 合併PR並清理分支
審查通過且自動檢查完成後,擁有倉庫寫入許可權的成員可以在PR詳情頁點選Merge完成合並。


合併完成後,VScode會提示刪除遠端和本地的功能分支。確認PR已經正確合併後再進行刪除,最後切換回main分支並點選Pull獲取最新程式碼。


緊接著PR會被自動關閉.
