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