我弄乱了我的历史,想对它做一些改变。问题是,我有一个包含两个不相关更改的提交,并且这个提交被我的本地(非推送)历史记录中的一些其他更改所包围。
我想在推出之前拆分此提交,但我看到的大多数指南都与拆分您最近的提交或未提交的本地更改有关。从那以后不必“重做”我的提交,对历史中埋藏的提交执行此操作是否可行?
在 rebase 手册页中有拆分提交的指南。快速总结是:
执行包括目标提交(例如)的交互式变基git rebase -i <commit-to-split>^ branch并将其标记为要编辑。
git rebase -i <commit-to-split>^ branch
当变基到达该提交时,使用git reset HEAD^重置到提交之前,但保持工作树完好无损。
git reset HEAD^
增量添加更改并提交它们,根据需要进行尽可能多的提交。add -p仅在给定文件中添加一些更改可能很有用。如果commit -c ORIG_HEAD您想为某个提交重新使用原始提交消息,请使用。
add -p
commit -c ORIG_HEAD
如果您想测试您正在提交的内容(好主意!),请使用git stash隐藏您尚未提交的部分(或stash --keep-index在您提交之前),测试,然后git stash pop将其余部分返回到工作树。继续提交,直到你提交所有修改,即有一个干净的工作树。
git stash
stash --keep-index
git stash pop
运行git rebase --continue以在现在拆分提交之后继续应用提交。
git rebase --continue