例如,我添加了一个.gitignore
文件。之后我做了一些工作,但现在意识到我应该再添加一个我应该忽略的文件夹。
mybranch HEAD 1: Much work
2: Much work
3: Add .gitignore
origin/master 4: Others have this
我不想做一个新的提交,说“编辑.gitignore”,而是回去修复它。由于我没有将我的提交推送给其他人,但我想尽可能地整理我的提交。
我想我可能要检查一下提交并修改它。那么我该如何重复新的提交呢?一个接一个地进行合并到最后一点会让我最终进入一个新的分支。我想最终成为起点减去小变化。
答案 0 :(得分:2)
您可能希望使用rebase
并将提交压缩成一个。
假设您想将最后两次提交压缩为一次提交:
$ git rebase -i HEAD~3
现在你应该有:
pick ccccccc third commit
pick bbbbbbb second commit
pick aaaaaaa first commit
# Rebase ...... onto ......
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
将pick
替换为squash
(或简称为s
),无论您想要压缩到哪一个提交。
有关详细说明,请浏览上面发布的链接。
答案 1 :(得分:1)
您可以做的是引入一个新的提交,更改为.gitignore
,然后将其移动并压缩到旧提交中。
新提交后你将拥有
HEAD 1: .gitignore edit
2: Much work
3: Much work
4: Add .gitignore
...
然后,如果您运行git rebase -i HEAD~4
,您将在编辑器中看到提交,并且必须选择要保留的提交。
您可以在[4]之后将新[1]移到右侧,并将其设置为squash
而不是pick
,这会使其“融入先前的提交”。
您可以详细了解此流程here。