壁球提交一个封闭拉动请求

时间:2017-11-11 16:48:57

标签: git github git-commit pull-request

我有一个合并和关闭的拉取请求。之后我删除了那个分支。现在,该分支的所有提交都显示在合并分支的历史中。现在有一个选项可以在Git中恢复分支,但我真正想要的是压缩该PR的一些提交,以便它不会显示在合并它的分支的提交历史中。说最初PR有5个提交并成功合并和关闭。 有没有办法从合并和关闭的PR中压缩一些提交?

2 个答案:

答案 0 :(得分:0)

您可以使用git rebase -i <hash of first commit before merge>,然后可以选择压缩相关提交。请注意,这是重写实际的提交历史记录,因此如果您与其他人共享存储库,那么在执行此操作后您将有不同的提交,这是潜在的危险区域。

答案 1 :(得分:0)

唯一的方法是更改​​master分支中的历史记录(假设您的feature/branch已合并到master):

$ git checkout master
$ git reset --hard <commit-before-merge>
$ git push -f origin master

现在您可以重写您的历史记录:

$ git checkout feature/branch
# Hypothesis: 5 commits to squash together
$ git rebase -i HEAD~5  
# Rewrite your history: reword, squash, etc...

此时,也许你应该在主人

上修改功能/分支
$ git rebase master

一旦您对分支历史感到满意,就可以向上游推送:

$ git push -f origin feature/branch

然后在github上创建一个新的pull请求并合并它

重要提示

每个人跟踪分支master都必须发出git pull --rebase来重新同步他们与上游的历史记录,并重新编写:

$ git checkout master
$ git pull --rebase origin master

这将防止任何冲突和/或合并提交将上游历史记录视为理所当然(接受theirs),发出快进。

依赖于master的分支仍然如此,这需要相应地进行重新定位:

$ git checkout feature/branch-still-depending-from-master
$ git rebase master

希望这会有所帮助;)