有时当我做了一些更改(git diff)时,我希望它们中的一部分(只有特定的文件)添加到较旧的提交中。
最简单的方法是什么?
答案 0 :(得分:2)
您可以添加要在旧提交中合并的更改,例如
git add [path]
或git add -p
然后使用您希望移动这些更改的提交的哈希值创建一个fixup提交
一个例子:
git commit --fixup [commit hash]
要将这两个提交合并为1,您最终需要进行交互式rebase
git rebase -i origin/[branch name] --autosquash
在交互式rebase
之后,你必须强制推动(谨慎) git push -f
答案 1 :(得分:1)
当您说“添加旧提交”时,我假设您要修改之前的提交:
git add ... # add as you see fit, maybe with -p
git commit --amend
这会将添加的更改压缩到上一次提交中。请记住,这会修改历史记录,因此,如果您已将该提交推送到遥控器,则可能不是一个好主意(请参阅How do I push amended commit to the remote Git repository?)。
如果要修改与最新提交不同的提交,则需要使用--fixup
或提交它,然后使用rebase --interactive
将其压缩到所需的提交中。但同样,请记住,您正在重写历史记录,不仅可能遇到问题,还会遇到与后续提交冲突的问题。