我有合并和关闭请求。之后,我删除了该分支。并且该分支的所有提交现在都显示在合并分支的历史记录中。现在有一个选项可以在Git中恢复分支,但我真正想要的是压缩该PR的某些提交,以便它不会显示在合并分支的提交历史记录中。假设最初PR有5次提交并成功合并并关闭。 有没有办法压缩合并和关闭的公关中的一些提交?Squash提交闭合请求
0
A
回答
0
你会使用git rebase -i <hash of first commit before merge>
,然后你可以选择挤压相关的提交。注意这是重写实际的提交历史记录,所以如果你与其他人共享存储库,那么在完成这些操作后你会有不同的提交,这是潜在的危险领域。
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上一个新的拉请求,并把它合并
重要事项
每个人跟踪分支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
希望这有助于;)
相关问题
- 1. Git扩展:Squash提交?
- 2. Squash在GitHub上提交PR
- 3. 上拉合并提交请求
- 4. 在Github中合并一些提交请求提交
- 5. git merge squash非连续提交
- 6. Git的合并与--squash同时保持每个日志提交
- 7. Git可以合并--squash保留提交注释吗?
- 8. 不要关闭提交请求提交消息中提到的问题
- 9. 关闭gitlab合并请求
- 10. Git Squash按作者 - 所有作者提交到一个提交
- 11. 提交POST请求到Piwik.php
- 12. 如何停止未提交的提交关闭的拉取请求
- 13. bootstrapValidator ajax请求,提交后阻止关闭bootstrap模态
- 14. 已删除的拉取请求在合并的拉取请求中提交
- 15. 有没有办法压缩已提交的合并请求中的提交?
- 16. Gitlab:从提交ID获取合并请求
- 17. Git - 合并提交拉请求,当一切都通过github.com
- 18. 合并已经处于拉取请求中的两个提交
- 19. 如何在批准合并请求时压扁提交,gitlab
- 20. 尝试提交POST请求时的400个错误请求
- 21. 压扁提交一个提交bitbucket的请求
- 22. 将提交请求提交到aspx页面
- 23. Git:从提交请求中排除已提交的文件
- 24. 如何仅使用github3.py来修改提交/提交请求?
- 25. Github拉请求没有老提交
- 26. Python:使用请求提交表单
- 27. 提交亚马逊MWS GetMyFeesEstimate API请求
- 28. 更新提交/拉请求Github清单
- 29. Ajax请求的表单未提交
- 30. 选择提交发送拉请求
https://stackoverflow.com/a/47048569/2303202 – max630
我的问题是,我不能直接在合并的分支上更改提交历史记录,因为这是受保护的分支。有没有什么办法可以从封闭的请求或恢复的分支中重写历史? – Akshay
不,如果一个提交是某个分支的历史,那么它是如何发生的。 IT无法将其删除。 – max630