2015-05-12 44 views
1

我熟悉git的基础知识,但不是高级的东西,我在这里有点迷路。虽然我在命令行上执行签出和提交和克隆,但我确实使用Github用户界面来分叉和合并其他回购。Get Origin Repo's Master作为我在Git中的分支的一个分支

所以我的问题是这样的:后来我克隆了一个回购,我们称之为Upstream,并做了一些更改。让我们打电话给我的分支Downstream.我提交了我的代码作为拉取请求,但Upstream不希望我的更改。哦,现在我为自己和其他一些想要我添加的功能的用户维护Downstream。我时不时地将Upstream/master的变更提交到Donwstream/master

现在,我想在Upstream上做更多的工作,并再次将我的更改作为拉取请求提交给他们。但是,我的master已经表示他们不想要的更改,所以我想将其master重新分配到Downstream(即Downstream/upstream-master)的新分支中。我将如何做到这一点?

回答

1
  1. 如果您的存储库当前没有上游远程设备,则需要git remote add upstream https://github.com/Foo/Bar.git,然后使用git fetch upstream
  2. 从上游获取代码:git checkout upstream/master
  3. 创建一个新的本地分支指向代码,您刚刚checkout出来:git checkout -b upstream-master
  4. [可选]樱桃采摘从这个旧的分支工作到你刚才提出的一个。 git cherry-pick abc123

为简单起见,我将这些作为单独的命令留下,但可能有将它们组合成单个命令的方法。

+1

前两个可以合并为'git checkout -b upstream-master upstream/master'。 – chepner

+0

谢谢。对于将来遇到这个问题的任何人,在执行上述操作之前,需要执行以下操作:'git remote add upstream https:// github.com/Foo/Bar.git' then'git fetch upstream' @ mkasberg,你可以添加到你的答案? :) – Pharylon

+0

作为第一步添加。 – mkasberg

相关问题