【发布时间】:2018-03-31 14:12:50
【问题描述】:
我对 Github 上的分叉存储库进行了一些更改,并发送了一个拉取请求。业主有一些小问题,我现在在本地解决了。我应该如何提交这些修复?当我只是提交并推送时,拉取请求中是否还会有一个“固定”提交?
为了保持干净,我想重新设置或修改我的最后一次提交并进行强制推送,但是拉取请求会发生什么?它会被自动删除还是只是添加(我希望发生什么)?
【问题讨论】:
标签: git github pull-request
我对 Github 上的分叉存储库进行了一些更改,并发送了一个拉取请求。业主有一些小问题,我现在在本地解决了。我应该如何提交这些修复?当我只是提交并推送时,拉取请求中是否还会有一个“固定”提交?
为了保持干净,我想重新设置或修改我的最后一次提交并进行强制推送,但是拉取请求会发生什么?它会被自动删除还是只是添加(我希望发生什么)?
【问题讨论】:
标签: git github pull-request
拉取请求来自分支的引用(而不是来自特定的提交)。
因此,在合并拉取请求之前,您在分支中所做的每项更改(即推送到您的存储库)都将反映在拉取请求中。
这是 GitHub 为使贡献更容易而做出的明确设计,可以在评论和 cmets 之后添加提交。这甚至是推荐的工作流程,可以在开发早期(即工作未完成时)打开拉取请求以开始早期审查或讨论一些代码(PR 的draft 模式就是为此)。
修改提交并执行--force-with-lease 没有问题(应该优先于--force)因为您确定您是该分支中唯一工作的人,或者您警告其他开发人员事先或者他们非常清楚如何处理更新(否则你真的会打扰其他开发人员)
【讨论】:
是的,我肯定会推送新的提交。 Git 就是不改变提交历史。
是的,可能有一些骇人听闻的方式来完成修改更改,但是在拉取请求中添加另一个 fix 提交并没有错。
干杯。
【讨论】:
git commit --amend、git rebase、git reset 或 git cherry-pick 都是关于改变历史的。另请参阅 Pro Git 书中的 Git Tools - Rewriting History。事后改变历史的情况非常好。避免损坏的提交将是重写历史记录可能很好的一个例子。
不要让它变得复杂。再次进行修复提交并没有错,它将使事情变得简单并减少丢失代码的机会。干杯
【讨论】: