假设我在给定的git提交后做了一些更改。有没有办法将这些更改放在同一个先前的提交中?现在我做的是做另一个提交,然后做一个git rebase -i HEAD~2将两个提交合并为一个,但我更喜欢更快的方式。
有什么想法吗?
答案 0 :(得分:1)
如果您的工作目录或阶段中只有更改,那么您可以使用Git所谓的 修改 ,git-commit
可以选择
像这样使用--amend
:
git commit --amend -a
您可以重复使用以前的提交消息:
git commit --amend -a --reuse-message=HEAD
如果你有多次提交,你想快速压缩到另一次提交,那么git-reset
可能是一个有用的工具。
假设您有一个这样的树(并且HEAD指向C
):
A <- B <- C
如果您想快速将B
和C
合并到A
中以创建包含所有这三个提交内容的提交,您可以像{1}}一样使用rebase
在你的问题中。
或者,您可以像这样使用reset
:
git reset --soft A
git commit --reuse-message=HEAD
使用--soft
选项,以便将“重置”的提交内容放入您的阶段,并准备好提交。
当然,如果需要,您可以提供唯一的提交消息。
请注意,这两个选项都有效地重写了您的提交(就像rebase一样),因此会有一个新的SHA。旧的提交仍然可用,如果需要,可以使用reflog检索。