git在分支上合作

时间:2017-03-07 06:09:37

标签: git github version-control collaboration

汤姆和爱丽丝都要在project的分支上进行协作,该分支托管在Github上。以下是到目前为止发生的事情:

  1. Tom forks project
  2. Tom在他的分叉中创建分支new-feature
  3. Tom将更改提交到new-feature
  4. Alice forks project
  5. Alice:git remote add toms-fork git@githum.com:Tom/project.git
  6. Alice:git fetch toms-fork
  7. Alice:git checkout toms-fork/new-feature

    注意:查看&toms-fork / new-feature'。

    你处于分离头部'州。你可以环顾四周,做实验 更改并提交它们,您可以放弃您在此中提交的任何提交 通过执行另一次结账而不影响任何分支的状态。

    如果您想创建一个新分支以保留您创建的提交,您可以 通过再次使用-b和checkout命令来执行此操作(现在或稍后)。例如:

    git checkout -b

  8. 所以,这让Alice(我)感到困惑。我是否需要创建自己的分支并向Tom提交PR以合并到我的分支toms-fork/new-feature,然后将其合并到project

    另外,为什么Alice(我)处于detached HEAD状态?为什么我不在toms-fork/new-feature

2 个答案:

答案 0 :(得分:2)

您检出了名为toms-fork/new-feature的远程跟踪分支。这使你处于一个独立的HEAD状态,这是你不想要的。相反,你可能打算这样做:

git checkout toms-fork/new-feature
git checkout -b alice-branch         # create a new branch from new-feature

然后,在此分支上完成所有工作,当您将工作合并到new-feature时,您可以在alice-branch上发出拉取请求。这假设您要与协作者Tom共享new-feature。如果你想要自己的分支,你也可以直接从project分支在master分支中创建一个分支,例如。

git checkout master
git checkout -b alice-branch

然后,汤姆和你的分支最终会合并回project

答案 1 :(得分:1)

结帐到toms-fork/new-feature时,您处于分离的HEAD状态是由分支toms-fork/new-feature引起的,不是您的本地分支。

如果你和Tom合作toms-fork/new-feature分支,你和Tom可以在同一个github仓库上使用,例如git@githum.com:Tom/project.git(如果你们两个都可以)。

出于私人原因,您无法获得Tom's github repo的许可。因此,您需要创建本地分支并向Tom提交PR。然后汤姆向项目提交PR(或者你们两个都可以将PR提交给project)。

如果您的本地更改需要基于toms-fork/new-feature,则可以使用以下步骤:

# on master branch
git checkout -b mybranch
git rebase toms-fork/new-feature
make/commit/push your changes to toms-fork and submit a PR