我通常会提交一份提交列表以供审核.如果我有以下提交:
HEADCommit3 Commit2 Commit1...我知道我可以修改头部提交git commit --amend.但是我怎么能修改Commit1,因为它不是HEAD提交?
我已经看过这些先前的问题了:
但它们并没有完全解决特定问题 - 索引中还有其他变化!运行rebase命令时,git抱怨:Cannot rebase: You have unstaged changes.
最后一个之前的提交(我将其称为"2 HEADs前"吗?)是一个重构提交.我目前在索引中有许多非分段更改,但我只想将其中一些添加到上一次提交的上一次.
我想象这样做的方法是:
stash 我目前的所有变化 rebase -i 到最后一次提交(更改索引并移动Head,对吧?) add -p并commit --amend有选择地修改此旧提交 rebase --continue 完成(更新孩子,移动回到我开始的地方,索引会发生什么?) 它是否正确?如果是,我该如何做第3步?如果不是,我应该做什么呢?
另外,请注意我还在学习git,我仍然不能100%确定我正确地引用了git(Head,index,stash等)中的东西.
对于其他任何人都可以提供帮助,这些是我实际采取的步骤:
git stash 我目前的所有变化 git rebase -i <ID>到前一次提交的父级,更改索引并移动Head git stash apply 将存储加载到我的索引中而不更改Head
git reset HEAD <file>请卸载文件暂存.确保分期清晰.add -p并commit --amend有选择地进行更改并提交它们 git reset --hard 丢弃索引,使其与Head匹配git rebase --continue完成.更新孩子,移动头回到最开始,但有变化