第 2 節

Git實操

0瀏覽次數0訪問次數--跳出率--平均停留

環境準備

  1. 操作系統: Linux,Windows,MacOS(本文以Linux為教程)
  2. 安裝Git
sudo apt-get update
sudo apt-get install git
git --version

常用指令介紹

Linux創建目錄&&並進入目錄

mkdir -p hellogit
cd hellogit

設置git的用戶與郵箱(必須設置!!!)

git config --global user.name "tungchiahui"
git config --global user.email tungchiahui@gmail.com

git初始化(使該文件夾被git控制)

git init

創建文件&&查看當前文件夾內的所有文件

touch test.md
ls

編輯文件文本內容

sudo apt-get update
sudo apt-get install vim
vim ./test.md

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

按ESC退出編輯模式

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

查詢當前文件的狀態

git status

On branch 分支名

Untracked是指文件在工作區

將文件提交到暫存區

git add test.md

將文件提交至本地倉庫

git commit -m "version1"  
#git commit -m "提交的信息(可以理解为是注释)"

查看已經提交的項目版本

git log

這幾行的意思是tungchiahui(郵箱為tungchiahui@gmail.com)用戶於2023年12月30日週六00:42:47往master分支提交了註解為"version1"的項目版本

可以嘗試對文件內容進行修改,並再次進行提交

vim test.md
git add test.md
git commit -m "version2"
git log

如何忽略掉不想提交的文件

  1. 首先創建一個文件.gitignore
  2. 再創建一個文件 絕密文件不想開源.py 並修改裡面的內容
  3. 查看git狀態
touch .gitignore
touch vinci_secret.py
vim vinci_secret.py
git status

  1. 修改.gitignore的內容,將不想被提交的文件名寫入該文件
vim .gitignore
git status

分支基本操作

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

當前分支文件會完美繼承master分支的文件

  1. 刪除掉該分支下的文件
ls
rm -rf test.md
rm -rf vinci_secret.py
ls

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

  1. 查看分支是否對其他分支有影響(切換到其他分支查看影響)
git checkout master
ls

可以發現,在route2分支中被刪掉的test.md文件回來了,但是同樣被刪掉的vinci_sercet.py文件沒回來,是因為該文件在提交時被.gitignore文件屏蔽了,不會被提交到本地倉庫

  1. 刪除分支
git branch -D route2
#git branch -D 分支名

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

分支的合併

  1. 在route3分支中修改文件內容並提交
vim test.md
git commit -am "route3 version3"
#-a -m也可以被省略成-am

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

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

分支合併的衝突

  1. 為master添加一行內容,並提交
vim test.md
git commit -am "master version4"

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

  1. 合併分支
git merge master

發生了內容衝突,需要手動修改文本衝突才可以!或者其他辦法也可以解決,可以查詢百度。

遠程倉庫Github

  1. 打開github官網:https://github.com(如果你打不开,请自己找办法打开)
  2. 註冊並登錄賬號

  1. 新建遠程倉庫

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

如果上圖出現,則說明已經創建成功了

  1. 進行創建文件並提交

填寫好文件名,文件內容,就可以點綠色按鈕進行提交了。然後也可以填寫提交的註釋信息。

  1. 克隆遠程倉庫到本地

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

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

  1. 對文件內容進行修改
cd test_repo
vim test1.md

  1. 查看該本地倉庫與哪些遠程倉庫有聯繫
git remote -v

  1. 將本地倉庫push到遠程倉庫
git push

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

Note隨便填,有效日期選擇沒有截止時間。

下面能勾的勾全勾上,這是權限。

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

  1. 查看遠程倉庫

發現文件已經被修改了!

  1. 對遠程倉庫內容進行修改

  1. 將遠程倉庫內容拉到本地倉庫
git fetch

  1. 查看本地與遠程倉庫區別
git diff origin/main
#git diff 远程仓库名/分支名

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

  1. 查看項目修改歷史
git log

使用Pull Request合併代碼

Pull Request簡稱PR,用於請求將一個分支中的修改合併到另一個分支。PR可以讓項目成員在合併前查看代碼變化、留言討論和進行審查,因此團隊協作時通常不會直接將未審查的代碼push到main分支。

  1. 從main分支創建並進入一個功能分支
git checkout main
git pull origin main
git checkout -b feature/pr-demo

feature/pr-demo是本次示例的分支名,實際開發時應使用能表達修改內容的名稱。

  1. 修改文件並提交到本地倉庫
vim test1.md

按下insert按鍵,然後隨便輸入點正文.

例如

TEST11111

然後按下ESC,再輸入:wq進行保存.

git add test1.md
git commit -m "修改test1文件"
  1. 將功能分支推送到Github
git push -u origin feature/pr-demo

-u會建立本地分支與遠程分支的跟蹤關係,之後在該分支上可以直接使用git push

  1. 在Github倉庫頁面創建PR

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

確認兩個分支選擇正確:

  • base: main:修改最終要合併到的目標分支。
  • compare: feature/pr-demo:包含本次修改的來源分支。

PR只能在兩個不同的分支之間創建。確認下方顯示的提交和文件變化沒有問題後,填寫PR標題和說明,再點擊Create pull request

  1. 審查並繼續修改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頁面查看本次修改:

  1. 合併PR

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

  1. 同步main分支並刪除已合併的分支

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

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

向沒有寫入權限的倉庫提交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。

VScode + Git

VScode是什麼?

VScode是一個文本編輯器,類似於Vim等編輯器,但是他有圖形界面,有非常多的好用的插件,而且可以集成編譯器環境,最終也可以被用戶自定義配置成Visual Studio那樣的IDE。

VScode官網:

https://code.visualstudio.com/

創建文件夾並在該文件夾下打開VScode

新建文件

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

U是指未追蹤狀態,也就是文件還在工作區

將文件提交到暫存區(類似git add)

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

A是added表示在暫存區

進行提交(類似於commit)

輸入提交信息,並點對號進行commit

創建新分支,並進入新分支

修改內容

顯示M為修改狀態

查看歷史版本對比(點擊文件)

提交

切換回main分支

合併分支

Push到Github遠程倉庫

  1. 在下面這個界面找到 Publish to Github,可能會彈出來點擊Sign In,然後按提示在瀏覽器中完成Github授權。

  1. 輸入倉庫名

  1. 打開github倉庫查看

使用VScode圖形化提交Pull Request

本節演示如何使用VScode創建、審查和合並Pull Request,整個過程不需要在終端輸入Git指令。

注意:如果要使用Pull Request,功能分支提交完成後不要執行上文的“切換回main分支”和“合併分支”操作。應當將功能分支保持獨立,通過PR審查後再合併到main分支。

  1. 安裝Github Pull Requests擴展

打開VScode左側的擴展頁面,搜索GitHub Pull Requests,安裝由Github發佈的GitHub Pull Requests擴展。

  1. 從main創建功能分支

先點擊VScode左下角的當前分支名,切換到main分支。在源代碼管理頁面點擊選擇Pull,保證本地main分支與Github上的內容一致。

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

  1. 修改文件並提交

在功能分支中修改文件並保存,然後打開源代碼管理頁面:

  • 點擊文件右側的+,將修改加入暫存區。
  • 在上方輸入提交信息,例如Add PR demo
  • 點擊Commit完成本地提交。

commit後變為

  1. 在VScode中創建PR

打開左側的Github Pull Requests頁面,點擊Create Pull Request。也可以按Ctrl+Shift+P打開命令面板,執行GitHub Pull Requests: Create Pull Request

  1. 填寫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即可將當前功能分支推送到遠程倉庫。

  1. 審查並修改PR

創建成功後,VScode會進入PR的Review Mode。在這裡可以查看提交記錄和文件差異、留言、邀請審查,也可以繼續修改代碼。

可以查看合併差異:

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

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

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

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

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

  1. 合併PR並清理分支

審查通過且自動檢查完成後,擁有倉庫寫入權限的成員可以在PR詳情頁點擊Merge完成合並。

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

緊接著PR會被自動關閉.

音乐页