向任何提交添加新更改

时间:2015-07-29 12:34:44

标签: git

有时当我做了一些更改(git diff)时,我希望它们中的一部分(只有特定的文件)添加到较旧的提交中。

最简单的方法是什么?

2 个答案:

答案 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将其压缩到所需的提交中。但同样,请记住,您正在重写历史记录,不仅可能遇到问题,还会遇到与后续提交冲突的问题。