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