一、快進的概念
git的快進(fast-forward)指的是合併兩個分支時,如果被合併的分支的最新提交所指向的提交(head)是當前分支所指向的提交的直接祖先,就可以直接將當前分支所指向的提交更新為被合併分支最新提交所指向的提交,這個過程是不需要執行實際合併操作的。這樣的提交過程稱為快進。
假設當前分支為master,被合併的分支為new_branch。執行git merge new_branch操作,如果new_branch的最新提交為5,而master的最新提交為4,那麼git可以直接將master分支所指向的提交更新為最新提交5,這個更新的過程就是一個快進過程。
如果被合併分支的最新提交不是當前分支所指向的提交的直接祖先,就需要執行實際的合併操作,這個過程稱為非快進合併,它會新建一個額外的提交,將兩個分支的不同點合併到一起。
二、noteaboutfast-forwards的作用
有些情況下,由於特殊原因,快進操作不一定是一個好的選擇。例如,多個人同時修改了同一文件的相同區域,git會提示合併衝突。此時如果強行執行快進操作,那麼會造成丟失部分修改記錄。
在這種情況下,我們可以在執行合併操作時使用–no-ff選項,例如git merge –no-ff branch1。這個選項會將新建的合併提交中的內容包含所有的分支歷史記錄,不會執行快進操作,這個提交是一個新的節點,而不是原來的某個節點。
此時,如果需要查看歷史記錄,就需要藉助於noteaboutfast-forwards,這個命令會顯示所有被快進合併的信息,包括所有被快進的合併提交的父提交,也就是顯示被快進的歷史記錄。
三、noteaboutfast-forwards的用法
使用noteaboutfast-forwards命令的方法非常簡單,只需要在git命令行中執行git noteaboutfast-forwards即可。
四、代碼示例
$ git merge --no-ff branch1 Merge made by recursive. file.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 file.txt $ git noteaboutfast-forwards e1df86da60abaae1772df1c764db541f169f871f merges branch1 into master: Fast-forward $ git log --oneline --decorate --graph --all * 8b3aaa0 (HEAD -> master) Merge branch 'branch1' into master |\ | * 79dbd0d (branch1) add feature 1 * | e1df86d (origin/master, origin/HEAD) merges branch1 into master: Fast-forward |\ \ | |/ |/| * | b3846a2 add feature 3 |/ * e4539c1 add feature 2
原創文章,作者:PPXYB,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/372374.html