我忽略了自己的歷史,想對它做一些改變。問題是,我提交了兩個不相關的更改,並且此提交被本地(未推送)歷史記錄中的其他更改所包圍。如何分解歷史中的Git commit?
我希望在推出之前拆分這個提交,但是我看到的大多數指南都與拆分最近的提交或未提交的本地更改有關。對於一個埋在歷史中的提交來說,這樣做是否可行,而不必從那時起「重新執行」我的提交?
我忽略了自己的歷史,想對它做一些改變。問題是,我提交了兩個不相關的更改,並且此提交被本地(未推送)歷史記錄中的其他更改所包圍。如何分解歷史中的Git commit?
我希望在推出之前拆分這個提交,但是我看到的大多數指南都與拆分最近的提交或未提交的本地更改有關。對於一個埋在歷史中的提交來說,這樣做是否可行,而不必從那時起「重新執行」我的提交?
有一個拆分承諾in the rebase manpage指南。的快速摘要是:
執行交互式底墊包括目標提交(例如git rebase -i <commit-to-split>^ branch
)並標記它被編輯。
當rebase達到該提交時,使用git reset HEAD^
重置爲提交之前,但保持工作樹完好無損。
遞增添加更改並提交它們,根據需要進行儘可能多的提交。 add -p
可用於僅添加給定文件中的某些更改。如果您想要將原始提交消息重新用於某個提交,請使用commit -c ORIG_HEAD
。
如果你想測試你犯了什麼(好主意!)使用git stash
遁形你有沒有犯的部分(或stash --keep-index
之前,你甚至提交它),測試,然後git stash pop
返回休息到工作樹。繼續提交,直到你完成所有修改,即有一個乾淨的工作樹。
運行git rebase --continue
繼續在現在分離的提交之後應用提交。
可能的副本[將副本提交+修改爲副本提交併使用git修改提交](http://stackoverflow.com/questions/2118042/split-a-commit-of- a-copymodify-into-a-copy-commit-and-a-modify-commit-using-git) – 2013-07-14 19:20:49