2017-03-07 114 views
0

湯姆和艾麗斯將在Github上託管的project分支上合作。以下是目前爲止發生的事情:git在分支上合作

  1. 湯姆叉project
  2. 湯姆在他的叉子中使分支new-feature
  3. Tom提交更改爲new-feature
  4. Alice forks project
  5. Alice:git remote add toms-fork [email protected]:Tom/project.git
  6. 愛麗絲:git fetch toms-fork
  7. 愛麗絲:git checkout toms-fork/new-feature

    注:檢查出 '湯姆斯叉/新功能'。

    你處於'分離狀態'狀態。你可以四處看看,做實驗 更改並提交它們,你可以放棄你在這個 狀態下的任何提交,而不會影響任何分支通過執行另一個結賬。

    如果您想要創建一個新的分支來保留您創建的提交,您可以使用-b和checkout命令(現在或以後)再次執行此操作(現在或以後)。例如:

    git的結帳-b

所以,這混淆愛麗絲(我)。我是否需要建立自己的分支並向湯姆提交PR以合併到我的分支toms-fork/new-feature,然後合併爲project

此外,爲什麼愛麗絲(我)在detached HEAD狀態?爲什麼我不在toms-fork/new-feature

+0

你有沒有得到幫助你來解決這個問題的答案嗎?如果是,請標記它。它會幫助其他有類似問題的人。 –

回答

1

您簽出名爲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。如果你想要自己的分支,你也可以直接從master分支中創建一個分支,例如project

git checkout master 
git checkout -b alice-branch 

然後,湯姆和你的分支最終將合併回project

+0

「,您可以在您的愛麗絲分支上發出拉取請求。」你如何做這部分?它是否是一個公關湯姆叉/新功能..? –

+0

_你告訴_me_這個問題的答案。如果你想讓你的工作進入「新功能」,那麼發佈一個PR作爲目的地。如果你想讓它回到'master',那麼發佈一個PR。 –

+1

創建拉請求是一個兩步過程。首先,通過'git push origin alice-branch'將你的分支推送到GitHub。然後,從GitHub站點內部創建一個請求並選擇你想要的目的地。而已。 –

1

當您結帳到toms-fork/new-feature是由分支toms-fork/new-feature不是您的本地分支時,您處於分離HEAD狀態。

如果你和Tom合作爲toms-fork/new-feature分支,你和Tom可以在同一個github倉庫上使用,比如[email protected]:Tom/project.git(如果你們倆都可以)。

由於私人原因,您不能獲得Tom的github回購的許可。所以你需要創建你的本地分支並向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 
+0

爲什麼要重組而不是合併? –

+0

通常rebase與合併相反。比如在'b1'分支上,使用'git rebase b2',它會重放從'b1'到'b2'頂部的變化。但是如果'b2'不是本地分支,rebase是不同的。 –