Git 學習筆記(二)分支管理

2022-07-18 09:09:12 字數 2094 閱讀 5380

git branch

—— 顯示所有分支,其中以 「*」 號開頭的為當前活躍分支

git branch branch_name [old_branch or any_commit]

—— 建立分支(或將已刪除的分支恢復到某個提交節點)

git branch -d branch_name

—— 刪除分支(-d 選項為強制刪除)

git checkout branch_name

—— 切換分支

—— 切換分支之前要確保已產生的更改已經提交或儲存。git commit --all 可以提交所有已產生的更改,git stash 可以儲存已產生的更改(之後通過 git stash pop 可以恢復已儲存的更改)。

git reset --hard 《某次 commit 的 hash值》

—— 將分支的指標指向特定的某次提交,該操作會覆蓋當前工作區和暫存區的所有更改。

git reflog

—— 查詢所有的提交節點,輸出格式為 《雜湊值》 head@: checkout/merge/commit: comment

gc—— 清理提交物件

語法—— git merge 被合併的分支 [活動分支]

合併演算法

—— git 實現了3種不同的合併演算法,預設情況下採用的是遞迴演算法。還有3路演算法和 octopus 演算法。

衝突—— 兩個或多個人員對同一組檔案的相同部分做了不同的修改(編輯衝突),或兩個或多個人員對同一組檔案的不同部分做了修改而這些修改互相之間有一定的關聯(內容衝突)。編輯衝突容易發現和排查,內容衝突比較隱蔽(規避方法:① 藉由自動化測試構建保護機制;② 使用斷言,前置與後置條件;③ 定義清晰的介面實現松耦合;④ 靜態型別檢查)。

衝突標誌:<<<<<<<(被合併的分支對衝突部分的修改)|||||||(衝突部分的原始內容)>>>>>>>(活動分支對衝突部分的修改)【預設顯示 <<<<<<< 和 >>>>>>>,可通過 git config merge.confilictstyle diff3 顯示三個標誌】

合併分支的過程中可能自動合併也可能因存在衝突而需要人工介入。其中自動合併的檔案將預設新增到了暫存區,等待提交。需要人工介入的部分則要求排除衝突後通過 git add 手動新增到暫存區。

解決衝突:

方式① 開啟衝突檔案逐一調整衝突部分;

方式② git checkout --ours 《檔案/目錄》 使用活動分支的版本;

方式③ git checkout --theirs 《檔案/目錄》 使用被合併的分支的版本;

可以使用 git mergetool 輔助解決衝突。 

取消合併

—— git reset --merge

快進合併

—— git merge --no-ff 禁用快進合併

巧用 git log

(1)第一父級提交歷史

—— git log --first-parent --online r1.0..master

—— 通常指定乙個分支用於整合所有的已開發、即將開發的特性,叫做結果分支,一般為 master 分支。該結果分支儲存著各個特性合併提交的序列。第一父級提交就是以結果分支當前 head 所在的節點為基礎,合併特性分支,產生新的結果分支節點,更新 head 的過程。合併過程使用的是快進合併。

(2)對比合併分支和被合併分支

—— git log merge_head..head    顯示本地活動分支相對於被合併分支 head 的修改

—— git log head..merge_head    顯示被合併分支相對於本地活動分支 head 的修改

—— git log --graph --oneline --decoreate head merge_head    圖形化顯示差別

—— git log --merge    只輸出合併提交

—— git merge-base head merge_head    顯示合併操作的基礎節點(提交的 hash 值)

—— git diff --stat 合併操作的基礎節點的hash值 head    顯示本地修改

—— git diff --stat 合併操作的基礎節點的hash值 merge_head    顯示被合併節點的修改

杜絕「鑽石鏈」,線性發展。

移植分支

git操作詳解(二) 分支管理

分支管理 一 建立分支 重新建立乙個倉庫git lvhuayan 2 1 手動新增乙個new01.py檔案,內容為print new01 2 使用 git add git commit m 第一次提交 進行提交 3 手動新增乙個new02.py檔案,內容為print new02 4 使用 git a...

Git筆記 2 分支管理

svn有分支管理,但是建立和切換分支耗時特別長,形同虛設。建立於合併分支 檢視分支 git branch 建立分支 git branch 切換分支 git checkout 建立 切換分支 git checkout b 合併某分支到當前分支 git merge 刪除分支 git branch d 強...

Git常用命令(二) 分支管理

對於專案開發來說,乙個人不可能負責全部的 需要多人合作,這就用到分支的重要性了。假設你準備開發乙個新功能,但是需要兩周才能完成,第一周你寫了50 的 如果立刻提交,由於 還沒寫完,不完整的 庫會導致別人不能幹活了。如果等 全部寫完再一次提交,又存在丟失每天進度的巨大風險。現在有了分支,就不用怕了。你...