GIT 使用經驗 3 分支間的操作 續

2021-08-26 16:41:24 字數 1121 閱讀 1166

git處理分枝和合併是非常獨到的。無論是建立新分枝還是分枝之間切換,都表現出乙個共同的特徵--快!git 鼓勵在工作流程中頻繁使用分支與合併,哪怕一天之內進行許多次都沒有關係.下面就詳解一下git的合併與撤銷

比如現在專案提交了幾次更新,在c2通過主分支建立了2個不同的分支做不同的任務

等任務做完需要merge到master時就可以切換到master分支下分別merge iss01和iss02分支。首先merger iss01時,會看到fast forward的提示,因為c3是c2的直接上游,所以git只需把 master 分支指標直接右移。此次合併不會產生任何的衝突。如下圖。

然後在用master合併iss02,會看到merge made by recursive.,git會合併c3,c4並對合併後的結果重新做乙個新的快照,並自動建立乙個指向它的提交物件c5如下圖

有時候合併操作並不會如此順利。在進行如上操作的過程中,如果iss01和iss02修改到了同乙個檔案的相同**時,就會出現衝突,遇到此問題時我們可以用小烏龜自帶的衝突工具解決。如下圖

如果在分支iss01提交的時候它的直接祖先c2也進行了修改,如下圖。這時候在用c6合併c4也是可以的,git會自己裁決哪個共同祖先才是最佳合併基礎,所以此特性讓git的合併操作比其他系統都要簡單不少。

如果檔案已經修改,但是還沒有commit,我們可以用小烏龜的revert命令進行撤銷。

如果檔案已經commit,可以使用git reset --hard head~1撤銷上一次提交。~代表撤銷前幾次的提交.

此命令回退一次commit,在回退到的commit之後的所有修改都被丟棄,所以要慎重使用。

也可以使用git reset --soft head~1撤銷上一次提交,它和hard的區別是,同樣取消一次commit,但是所有的修改都保留。此方法用來修改commit的message非常方便。

git-revert head~1      一般是按照某一次的commit完全反向的進行一次commit,他的效果和git-reset --hard head~1 && git-commit -a -m 'revert commit ***....' 完全一樣。

reset命令只是相當於在本地進行一次還原操作,如果想讓別的分支知道你的撤銷動作,請使用revert命令,它是完全反向的進行一次commit。

Git的使用 6 分支管理

分支的簡單的理解就是分身,就像孫悟空拔出猴毛變出很多跟自己一模一樣的猴子,然後每個猴子做自己的事情互不干涉,等到所有猴子做完之後,猴子集合來合併勞動成果,然後悟空就把那些猴子猴孫門統統收回了。git的分支也是乙個殺手鐗級別的功能!比如 你現在正在a.php裡面做新功能的增加,大約寫了300行 突然,...

Git學習之路(6) 分支操作

幾乎所有的版本控制系統都會支援分支操作,分支可以讓你在不影響開發主線的情況下,隨心所欲的實現你的想法,但是在大多數的版本控制系統中,這個過程的效率是非常低的。就比如我在沒有學習git之前,想實現我的乙個小想法,但是又害怕影響已完成的工作,只有ctrl c ctrl v,但是在git中,甚是方便了許多...

Git學習筆記 7 分支操作

在多人合作專案中,常常出現多個人共同對乙個專案進行修改的情況,因此不會直接在主幹master上進行操作,而是重新開闢新的分支,在新的分支上進行開發,除錯,當除錯通過後才會將分支專案的 合併到主幹中。命令描述 git checkout branch 切換到指定分支 git checkout b new...