2014-12-13 70 views
0

我将GitHub项目分叉到我自己的存储库中。我的存储库只包含一个“主”分支,我在其中提交自己的代码。分叉项目也只包含一个“主”分支。Git:与原始分叉主同步分支

有时,我发现并修复了原始代码中的一些错误,我想创建一个拉请求,以便原始项目的开发人员可以添加修补程序。但是,我不想在此请求中添加所有我更改的代码,只是修复。

我认为在这里继续的正确方法是在我的资源库中创建一个新分支,将其与原始分叉主同步,提交修复并创建请求。我的问题是:我如何创建一个分支并摆脱我所有的提交与分叉主同步?

另一方面,这实际上是这样做的最实际的方法吗?

+0

小心解释downvote? – ChronoTrigger 2014-12-14 03:31:49

回答

1

我可以建议接下来的步骤用于解决问题的方法:

  1. 配置远程地址到叉形主

git remote add upstream <url_to_forked_project>;

  • 取来自上游的所有变化
  • git fetch upstream;

  • 创建新修复分支和下载分叉主
  • git checkout upstream/master -b fix;

  • 申请你固定
  • git cherry-pick <commit_hash>;或以某种方式进行新的提交

  • 推更改到远程的github库
  • git push origin fix:fix;

    git branch -d fix; - 删除未使用的分支

  • 之后,您可以从远程创建新的请求修复分支
  • +0

    谢谢,它工作。步骤5中的'fix:fix'和'fix'有什么区别? – ChronoTrigger 2014-12-14 03:30:33

    +1

    当您需要为远程分支定义另一个名称时,它是更复杂的语法。您可以阅读这篇文章以获得更多信息'如何运行PUSH命令'https://help.github.com/articles/pushing-to-a-remote/ – 2014-12-14 14:05:02

    2

    您可以使用git revert命令创建一个分支并恢复所有提交,您希望摆脱该分支。

    然后sync forked repository获取在上游存储库中完成的所有更改。