在公司的 gitlab 公共倉庫中寫代碼做項目時,主要涉及以下常用 git 命令:
一、單個命令講解
1. 拉取代碼
(1)git clone [倉庫 URL]?
克隆遠程倉庫到本地(需確保 URL 正確) ?
(?2)git pull [遠程倉庫名] [分支名]?
從遠程倉庫拉取最新代碼(默認拉取 origin 倉庫的 master?分支)
(3)git fetch [遠程倉庫名] [分支名]?
僅下載遠程分支更新,不自動合并
2. 分支操作
(?1)git checkout [分支名]?
切換到指定分支(如 master、develop 等)
加選項“-b”即創建并切換到該分支
(?2)git switch [分支名]?
切換分支(僅 Git 2.23+ 版本支持)
(?3)git branch [新分支名]?
創建并切換到新分支(如 feature-branch)
(4)git merge [分支名]
將指定分支的代碼合并到當前分支
3. 代碼管理
(1)git init
初始化一個新的 git 倉庫
進入到目標文件夾,運行該命令在當前文件夾下創建一個 .git 文件夾,作為 git 的倉庫
(2)git pull
更新本地倉庫,將遠程倉庫的改動拉取到本地
運行該命令命令更新本地倉庫,并將遠程倉庫的改動拉取到本地
(?3)git status?
查看本地倉庫狀態(是否需要提交、是否存在沖突等)
運行該命令可以查看項目下存在改動的所有文件
(4)git diff [文件名]
查看指定文件的詳細的修改內容
(?5)git add [文件名/目錄]?
將文件添加到暫存區
建議每次檢查完某個文件單獨執行 add,避免只用“add .”批量執行操作
(?6)git commit -m "描述信息"?
提交暫存區的代碼(需配合 add 命令一起使用)
“描述信息”:提煉出本次提交的關鍵信息即可
(7)git push -u origin [分支名]
將本地倉庫的改動推送到遠程倉庫
建議推送到自己的分支上,避免影響公共倉庫
-u 選項:建立本地分支與遠程分支的跟蹤關系
(8)git log
查看提交歷史記錄
4. 沖突處理
(?1)git rebase?
將本地提交重新排列到遠程分支最新提交之上(保持線性歷史)
(2)git merge [遠程分支]?
合并遠程分支到當前分支(保留合并記錄)
5. 團隊協作
(1)git fetch?
更新本地跟蹤的遠程分支信息(不自動合并)
(?2)git log --graph?
查看分支合并歷史(輔助團隊協作排查問題)
6. 注意事項
確保使用公司網絡環境可訪問倉庫
避免在公共分支執行 rebase 操作(可能破壞他人提交歷史)
定期使用 git fetch 更新遠程跟蹤分支信息
二、常用演示示例
“張三”在某公司的公共代碼倉庫中進行項目的開發,該倉庫的主分支(主干)假設為“master”:
# 若是第一次開發,則需從倉庫中克隆代碼到本地
git clone git@git.abcd.ef:gh/test.git
# git@git.abcd.ef:gh/test.git 為倉庫的 URL# 倉庫為公共倉庫,故需要創建自己的開發分支,不可在主分支 master 進行開發
git checkout -b zhangsan
# 把自己本地的分支推送到遠程倉庫
git push origin zhangsan# 查看當前倉庫的所有分支(本地的)
git branch
# 切換到其他的分支,假設本地有另一個分支 zhangsan01
git checkout zhangsan01# 若非第一次開發,即之前已經將代碼克隆到本地了,需要在開發前拉取倉庫的最新代碼,方可進行開發(因為公共倉庫存在已經有人提交過最新代碼的可能性)
git pull
git pull origin master
# 以上兩個命令看情況使用,判斷有無跟蹤關系# 完成代碼開發后,提交之前進行檢查
git status
git diff [文件名]# 檢查無誤后,再進行暫存(建議文件需要逐個檢查,逐個暫存,不建議批量)
git add [文件名]# 完成所有修改文件的暫存后,方可進行提交
git commit -m [zhangsan coding]# 最后推送到遠程的自己的分支
git push -u origin zhangsan
# 最后再 gitlab 上檢查完后,發送 merge 請求(若無權限審批該請求,找有權限的人即可)
上述經歷根據個人經歷而言,僅供參考
三、補充 - rebase 情況
首先要注意使用 rebase 的場景:未共享給他人的個人分支
在為期較長時間的代碼開發過程,每天開發前使用一遍 rebase 可讓合并簡單化
建議:在最后合并 CI 之前,再進行一遍 rebase
1. 個人分支
目的:保持分支 zhangsan 與主分支 master 同步,避免最終合并時沖突
# 每天開始工作前:
git checkout master
git pull origin master # 拉取最新代碼
git checkout zhangsan
git rebase master # 將本地提交“移動”到最新 master 上
2. 整理提交歷史
如果?zhangsan?分支上有大量瑣碎提交(如“fix typo”等),可以通過交互式 rebase 整理
# 合并/編輯提交
git rebase -i master
?