更新推送git提交

时间:2014-02-14 08:14:58

标签: git github

我需要一个简单的解决方案来更新我在拉取请求中提交的提交。

我经常对我的代码进行小修改,我不希望该分支的git历史对其他分支看起来完全混乱,所以我需要一种方法将多个小更新组合到一个提交中。

我已尝试用git rebase -i压缩,但它从未奏效,单个更新仍然存在。

有人能为我提供命令行或sourcetree GUI的分步说明吗?

2 个答案:

答案 0 :(得分:0)

你应该先做:

git rebase -i HEAD~{number of commits back your want to review}

然后,您应该删除pick并输入sf,具体取决于您是否要修改邮件。

完成后,如果失败,您应解决冲突并执行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强制重写。 谨慎使用,并且只有在您知道自己在做什么时