git - 当 cherry pick 了 pull request 时我该怎么办?

标签 git workflow github pull-request

我在 GitHub 上 fork 了一个项目,推送了一些更改,并打开了一个 pull 请求。维护者签署并在新提交中应用更改(而不是 merge 我的提交),因此提交图如下所示:

* 03a0687 (origin/master) frotz: Corrected MAN_PREFIX
| * 11d3e98 (HEAD, master, jleedev/master) frotz: Corrected MAN_PREFIX
|/  
* 9c3dd1a yajl: use direct patch from Github.

显然,我必须 rebase 或强制更新我的本地分支。然后我必须强制推送到我在 GitHub 上的分支吗?我问的主要是因为强制更新不应该是自动的。当维护者精心挑选您的更改时,这是标准做法吗?

最佳答案

最简单的事情就是始终在主题分支上工作。这样你的 forks 主分支总是看起来像上游,所以一旦上游包含你的更改,你总是做同样的事情,只需删除你的主题分支。

如果上游 merge 了您的更改,您的主分支和主题分支都包含相同的提交,您可以安全地删除主题分支。如果上游挑选了您的提交,那么在验证对上游所做的更改后,您可以删除主题分支。

这样做的另一个主要好处是您可以轻松地根据 master 对主题分支进行 rebase 。有时,如果没有手动解决冲突就无法在上游应用补丁,他们会要求您 rebase 或 merge 并自己解决冲突,因为这是您的代码并且您对它了解更多。我还怀疑他们精心挑选了您的提交,因为他们在您创建 fork 后已经提交并且不想仅为少量提交引入 merge 提交。通过精心挑选,他们使自己的历史更加线性和清晰。如果您经常进行基址调整,那么对他们来说可能只是快速 merge ,他们不需要挑选。

至于你现在要做什么的问题,强制更新你的本地分支然后强制推回你的分支是你唯一的选择。

关于git - 当 cherry pick 了 pull request 时我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5147847/

相关文章:

Ubuntu 上的 Gitolite : No adminkey given

visual-studio-2008 - 带有 Visual Studio 2008 的 SharePoint 2007 x64 工作流?

python - Airflow "This DAG isnt available in the webserver DagBag object "

git - 为什么我的 .git 文件很大?

git - 平均堆栈,Win 7,git push heroku master 结果在 sh : bower: not found error

git - 对于git,如何知道网络是否支持ssh或https?

github - 什么是伪 TTY 分配? (SSH 和 Github)

git - 无法克隆 Git 存储库,即使我将公钥添加到 GIthub

git - 如何调试大型 git 提交?

powershell - 如何让 PowerShell WorkFlow 访问以前导入的模块