如何选择不被另一个协作者接受的不需要的提交?

时间:2012-01-26 04:22:59

标签: git github pull-request

假设我在GitHub上有4次提交,我已经向其他协作者发送了拉取请求。但是在那4次提交中,有1次提交,我不希望我的协作者接受该文件。我们怎么做?据我所知,只有一个按钮显示自动合并(如果没有冲突),我们无法选择我们想要接受的提交。

其次,我有一个已经存在于我的Github上的提交,并且我没有向另一个协作者发送任何拉取请求(在这种情况下,有未被另一个协作者拉动的挂起拉取请求)。但是一旦协作者拉出文件,我将自动包含我未发送的提交。所以我没有看到拉请求在这里有用。虽然我们仍然可以在不发送拉取请求的情况下获得所有更新的数据。

所以我的主要问题是,有没有其他方法可以选择我们希望其他协作者接受哪个提交?因为有时候,我不希望我的协作者首先接受提交/文件。

1 个答案:

答案 0 :(得分:2)

  

据我所知,只有一个按钮显示自动合并(如果没有冲突),我们无法选择我们想要接受的提交。

以类似的方式你在推送到GitHub之前使用Git进行本地提交,没有什么能阻止你的协作者从GitHub中提取你的分叉,在本地合并然后推回他的 fork合并提交。

GitHub只添加一个“快捷方式”来合并拉取请求。它是唯一的方法。

考虑到你的问题,你必须使用Git。 GitHub UI仅适用于直接合并。您的协作者有两个独家选项:

  • cherry-pick 手动提交4次中的3次
  • 合并4次提交,然后 revert 不需要的提交

最后一个选择会给你带来负担:

  • 创建指向第一次提交的本地分支
  • Cherry选择您感兴趣的两个剩余提交
  • 推送此分支并从中打开拉取请求
  

但是一旦协作者拉出文件,我将自动包含我未发送的提交。

看起来你正在master投降。通常,每个开发人员为每个主题创建一个分支(错误或新功能)。与此主题相关的所有工作都在此分支中执行。一旦完成,你推动这个分支,打开它的拉取请求。

拉取请求已合并,下次您从主流存储库中取出时,您的工作现在将集成到主分支中。或者拉取请求已经被拒绝,你可以摆脱这个主题分支或重做它。

有时可能会发生主题分支太旧而无法合并而没有冲突。维护者可能要求您在当前HEAD之上 rebase 您的分支,并使用此更新分支force-update您的拉取请求。

这篇相当完整的帖子将帮助您详细了解 Git workflow