2015-09-03 409 views
2

大約一個月前我創建了一個分支。從那時起,主分支已經大量更新,並且功能分支不包含這些更新。我希望我的提交位於更新後的主分支之上,我只希望我的提交被髮布。我該如何做(甚至可能)?如何更新我的功能分支提交以更新主分支?

更多信息: 我的當地分支機構提交已經被推到遠程分支,但不是主分支。

我試過git rebase,但後來我得到一個消息,說我的樹枝有分歧「並有X和Y不同的提交各自分別。」

我不確定git push -f是否能解決我的問題。我不希望我的遠程分支記下在主分支上所做的更改。我只想讓我的遠程/本地分支「坐在最新版本的主控臺上」,並且仍然只顯示我的提交。

我不想「合併」掌握到我的分支,因爲那時1000+提交會掩蓋我的提交,我想只有我的承諾到我的同齡人很容易審查。

+1

通過「新主分支」,你實際上是否意味着一個新的分支,或者你是否意味着主分支有更新,功能分支不? – Brian

+0

我的意思是主分支已經大量更新,功能分支不包括在內。 – esanz91

+0

我更新了您的問題的措辭以反映這一點。我不認爲有一種好方法可以將主分支上的更改隱藏到功能分支中,但您應該只能在日誌中顯示更改。請參閱[如何查看一個用戶提交的git日誌?](http://stackoverflow.com/questions/4259996/how-can-i-view-a-git-log-of-just-one-users - 承諾)的方式來做到這一點。 – Brian

回答

1

這就是我做我的分支「davesBranch」與大師。

  1. 切換到您當地的主人並輸入「git pull」。
  2. 切換回 「davesBranch」 和類型 「GIT中變基主」。
  3. 完成後,請通過輸入「git status」來檢查衝突。
  4. 如果任何文件沒有合併(又名文本顏色爲紅色),則它們有衝突,需要您手動修復它們。修復後鍵入「git add。」。
  5. 然後輸入「git rebase - continueue」。
  6. 重複步驟3 - 5,直到沒有衝突。 (你會看到類似「你的分支和'origin/daves分支'有分歧」)。現在你可以輸入「git push origin davesBranch --force」。
2

從你的描述,我敢肯定,git rebasegit push -f是你想要的。 rebase命令會在更新後的master分支上重播您的更改。這張照片(從here)是發生什麼事了良好的表示:

git rebase picture

你得到了「有X和Y不同的提交各」重訂,因爲在一系列新提交的重訂後的結果的消息,所以您本地分支的歷史記錄不再與您的遠程分支的歷史記錄匹配。

如果您還沒有與其他人共享你的功能分支,也有使用git push -f沒有問題。這將簡單地重寫遠程功能分支以匹配您的本地功能分支。

如果其他人已經簽出了他們的功能分支,他們需要重新同步他們的本地工作副本,可能通過運行git fetch然後git reset --hard your/feature/branch

相關問題