我需要一个简单的解决方案来更新我在拉取请求中提交的提交。
我经常对我的代码进行小修改,我不希望该分支的git历史对其他分支看起来完全混乱,所以我需要一种方法将多个小更新组合到一个提交中。
我已尝试用git rebase -i
压缩,但它从未奏效,单个更新仍然存在。
有人能为我提供命令行或sourcetree GUI的分步说明吗?
答案 0 :(得分:0)
你应该先做:
git rebase -i HEAD~{number of commits back your want to review}
然后,您应该删除pick
并输入s
或f
,具体取决于您是否要修改邮件。
完成后,如果失败,您应解决冲突并执行git rebase --continue
。如果没有冲突,那么你很高兴。如果你想在遥控器上有一个干净的历史记录,你应该这样做:
git push --force
答案 1 :(得分:0)
编辑 - 如果您确实需要删除推送的提交,可以使用命令git revert SHA1
执行此操作。这将创建一个 cancel 提交,其中添加的所有行都将被删除,反之亦然。
如果要删除2个提交,则需要以相反的顺序取消它们(较旧的第一个):
git revert SHA1-of-commit-2
git revert SHA1-of-commit-1
git push
您执行了正确的命令,即git rebase -i HEAD~2
重写2次提交(相应地更改数字2)。然后会出现以下屏幕。您需要使用squash
删除提交但保留内容。
这里BUG-2将合并到BUG-1中,你有一个很好的历史推送(完成后只需git push
)。
pick 4ef60e2 BUG-1
squash 1d07893 BUG-2
# Rebase 10ff948..00e24be onto 10ff948
#
# Commands:
# ...
推送提交是永久性的,除非您单独工作并且愿意重写历史记录",其中包括重绕远程分支。要禁止一次提交,请执行git reset --hard HEAD~1
(相应地更改数字1),然后使用git push -f
强制重写。 谨慎使用,并且只有在您知道自己在做什么时。