浅谈git rebase命令 -- git修改历史提交信息
淺談git rebase命令
如果你只想修改git log命令打印到終端上的最后一個提交信息,那么使用git commit --amend命令直接修改就好。
如果你還想合并最近的某幾個提交為一個提交,并重新為這個化多為一的新的提交信息的話,那么就要考慮使用git rebase -i HEAD~n命令,注意其中n是一個具體的數字,即你一共想合并的提交的個數。
例如如果n為3,則你會得到這樣一個界面
根據下面的提示,修改上面那三個pick,注意如果是squash的話,第一個pick是不可以被修改為sqush的,因為第一個指的是,剩下兩個提交是要合并到第一個提交里的,把第一pick也改為squash的話,那么git就不知道該把這三個往哪合并了。
注意上面這個界面只是用來讓你修改pick的,其他的東西不需要動。
pick,指啥也不變(我的理解)
reword,指不合并,但是可以直接修改后面的提交信息,這里的直接修改不是在這個界面修改,這個界面只用來讓你修改pick的,其他的不要動。將第三行的pick修改為reword之后,保存并退出,git會直接創建一個vim會話窗口,此時你就可以修改提交信息了。
這里直接修改第一行的提交信息就行,其他的也不用動,然后保存并推出就完成了reword的功能。
edit,這個命令看似跟reword差不多,但是不能隨便用,因為如果你把第二行的pick改為edit,那么這里的意思就是丟棄第三行的提交,直接修改第二行的提交信息,保存并退出后,需要手動使用git commit --amend去把修改窗口調用出來,然后才能修改提交信息;如果你后悔了,那么可以使用git rebase --abort放棄本次修改。這里的git rebase --continue的意思是,如果你不使用git commit --amend修改提交信息,也不用git rebase --abort放棄本次操作,那就默認不修改提交信息并完成本次操作。
所以這個命令有一定危險性,沒想清楚不要隨便用。
squash,指的是將當前提交合并至上一個提交,注意因為是合并至上一個提交(范圍在出現在這個界面的),所以第一行是沒有上一個提交的,所以無法將第一行的pick改為squash。修改完pick后就可以保存并退出,git會自動彈出修改提交信息的窗口,把本來的多個提交信息修改為一個就可以了。(可以同時修改多個pick為squash,除了第一個pick不能被修改以外,都可以修改為squash)
fixup,fixup是僅僅丟棄提交記錄,但是該次提交的已修改的文件不會變動,這個適用于合并兩個分支時,兩個分支都有變動,那么在合并的時候git會自動創建一個提交記錄,記錄本次合并。如果沒什么沖突,為了簡潔,可以把這個自動創建的提交記錄丟棄掉。
drop, 顧名思義,丟棄,不僅丟棄提價記錄還丟棄添加或者文件內被修改的內容。
注意,倘若你已經git push到上游了,那就不要修改提交記錄了,會造成混亂。這只適用于本地修改完,但還未push的時候。
總結
以上是生活随笔為你收集整理的浅谈git rebase命令 -- git修改历史提交信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HR人力资源系统管理源码
- 下一篇: C语言编程实现简易计算器