如何创建一个可以同步到上游master的分支?

时间:2015-07-29 17:46:07

标签: git github pull-request

我从项目经理的主分公司做了一个分支。根据我的理解,现在经理的主分支是upstream/master,我刚刚分叉的是origin/master。我对origin/master进行了一些更改,其中一些更改只是添加了用于打印中间结果的注释和代码,这些更改符合我自己的理解。但也有新编写的代码更改。我在一次提交中提交了所有更改。但是我想仅为新创建的代码向upstream/master发送拉取请求。如this Stack Overflow question中所述,我没有为我的目标提供简单的解决方案。

现在我想在Branch1创建另一个名为origin的分支,这个分支应该与upstream相同,然后我只将新编写的代码提交给Branch1 },并从upstreamBranch1发送拉取请求。这种方法在当前的github系统中是否可行?如果是的话,你能告诉我这是怎么做到的。

修改

基于以下评论,答案和我自己的搜索的组合,我解决了这个问题。我做的是以下几点:

  1. git checkout -b Branch1 upstream/master,这将获得upstream/master的相同副本,并将其设为名为Branch1的新分支
  2. git checkout Branch1,在文件config中,将Branch1的远程更改为origin
  3. git checkout master somefolder,此时主人应为origin/master
  4. git commit -m 'message'
  5. git pushsomefolder将被推送到Branch1

1 个答案:

答案 0 :(得分:1)

使用github时的工作流程是gitub上的git命令和操作的混合。让我们说你的经理回购是https://github.com/manager/repo,你的名字是allanqunzi在github上。

1)在github上拆开回购,以便在https://github.com/allenqunzi/repo

下拥有回购

2)使用git clone git@github.com:allenqunzi/repo.git

将此回购克隆到您的计算机

3)git remote -v的输出应该只显示一个名为origin的远程指向git@github.com:allenqunzi/repo.git

的回购

4)进行更改并提交。用git push origin master将它们推送到您的仓库

5)转到github并打开拉取请求。它应该在您经理的回购中显示为新的拉取请求。它说你希望有人将allenqunzi / repo master合并到manager / repo master。

6)有人接受PR,你的代码最终会进入你的经理回购。

可选信息A)

如果您在经理/仓库工作时遇到问题,并且您需要在本地工作,则可以将经理回购添加为git remote add upstream git@github.com:manager/repo.git的第二个远程。 git remote -v现在显示两个不同的遥控器。现在,您可以git fetch upstream/mastergit merge upstream/master更新您的本地仓库,然后使用git push origin master推送它以更新您在github上的仓库。

可选信息B)

您还可以在其他分支中添加提交,推送此分支并从此分支打开PR到您的经理回购的主分支。

可选信息C)

如果您只想将某些文件/提交添加到管理器仓库,请在本地创建一个新分支。然后樱桃挑选所有提交到这个分支。或者复制要在其中更改的所有文件,然后进行新的提交。推送此分支并使用此分支打开拉取请求(请参阅B)以获取更多信息)

进一步阅读

两种资源也许有用(它们解释的有点相同,但可能更清楚一点;)

“fork a repo”https://help.github.com/articles/fork-a-repo/

“同步分叉”https://help.github.com/articles/syncing-a-fork/