2017-06-03 59 views
1

總結問題:在git中,處理多個人在同一時間在多個分支上工作的正確工作流程,重疊的文件集合中的更改不按時間順序排列?在3+分支同時工作時,適當管理git分支歷史的工作流程是什麼?

鑑於分支A和B都處於pull請求階段,並且分支Z已經合併爲master,那麼開始進行需要來自Z的特性的Branch C開發的正確工作流程是什麼?除了來自B的幾個更好的文件,它們註定要超越Z的變化,但還沒有通過拉動要求來讓它掌握。問題

步驟來重新創建情況

  1. 克隆GitHub的項目,以我的本地計算機。
  2. 創建一個新的分支A,並在github上進行更改,提交,推送到同名原始分支,發出請求
  3. 創建一個新分支B並在github上進行更改,提交, ,提出拉請求
  4. 同時,有人制作了一個分支Z,推送到了原產分支,並且已經合併了拉取請求。
  5. 如何開發需要Z和B的特徵C?警告是Z和B包含對相同文件的修改。對於某些文件,我想要Z版。對於其他人,我想要B版。

這裏開始研究C特徵的正確步驟是什麼?我知道我需要Z和B來做到這一點。我應該在我的本地主人上做一個Git來獲取Z,創建一個分支C,然後將B併入C?我試過了,但它不起作用,因爲來自B的舊文件接管了我想要從Z中所做的更改。是否有一種方法可以精確地從Z中除了幾個文件以外我想從中獲得的更改分支B:changefromb.c,changefromb.h。

還是我做錯了?現在,我們每天都在推動一些東西,我發現我不知道git的哪些功能可以正確處理。

回答

0

我發現解決這個問題最簡單的方法是讓我自己領先於主分支,它從真正的主分支中抽取,但​​也包含最新的代碼還沒有在主分支中。我一直在調用分支master-dev。

1

git checkout允許您選擇您需要的文件:

git checkout B changefromb.C# places B's copy of changefromb.c into current branch 

如果你想擁有的B的文件的精確副本創建C,我將創建分支Z的分支C和使用上面的命令複製來自B的相關更改。

否則,如果要複製B的更改並將它們應用於現有版本的Z之上,則可以使用cherry-picking從B中選擇特定的提交以複製到新的分支C.取決於提交的「原子」如何,您可能必須創建一個單獨的「清理」提交t o從櫻桃挑選的提交中撤銷無關的更改。