簡體   English   中英

合並遠程分支並使其變基

[英]Merge and rebase remote branches

我有一個本地分支master ,並跟蹤兩個遠程分支masterdev-me 同時,另一位開發人員擁有自己的本地master ,並跟蹤同一遠程master和他自己的專用遠程分支dev-other

我們每時每刻都分別從自己的本地master推送到遠程dev分支(即dev-medev-other )。 然后,我們想將我們的遠程dev-x分支合並到遠程master分支。

我正在考慮執行以下操作:

  1. 我們每個人都他的遠程dev-x分支合並到遠程master分支。

  2. 從這個對方底墊合並遠程master分支自己的遠程dev-x分支。

  3. 步驟2)中的同一個人合並回遠程master分支。

這是正確的方法嗎?

您沒有正確使用分支。 看一下我的文章,發現您不應該專注於開發人員擁有哪些主分支和主要分支。 您應該專注於進行中的分支或功能分支,並使用其他分支來管理它們的集成:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

您太復雜了。 將git中的所有內容都視為本地操作,而忽略其他人,並將遠程存儲庫視為共享存儲區域。

聽起來(如果我說對了),您每個人都在master上工作,但同時推送到origin / master和origin / dev-something。 這可行,但可能會造成混淆。 如果您在母版中工作,請推送至母版。 如果要推送到dev-something,請 dev-something 的本地副本中工作

聽起來很不錯,如果要合並所有遠程內容,請執行以下操作:

git fetch --all
git checkout master
git merge origin/master origin/dev-me origin/dev-other
[resolve conflicts]
git push origin master:master

如果決定使用rebase,則需要按順序將每個遠程分支重新建立到master上,盡管它具有線性歷史記錄,但實際上並不能代表並行開發的現實。 另外,您需要確定誰的更改“第一”。

我建議最好是,每個人都在本地dev-whatever分支中工作,然后專門推送到該分支的上游版本。 當您想將代碼放入master中時,簽出master的本地副本,合並dev-whatever的本地副本,然后將您的本地master備份。 因此:

git checkout dev-whatever
git fetch --all
git merge origin/dev-whatever
[hack hack hack]
git commit -a
git push origin dev-whatever:dev-whatever
[decide you want to integrate what you've got into master]
git checkout master
git merge dev-whatever
git push origin master:master

如果你們倆都這樣做,那么您將各自整合自己的更改。如果您的同事已經推送了您的推送,而他/她自己的推送已合並到更改中,那么推送將失敗。 不用擔心,此時您需要做的是:

 git fetch --all
 git merge origin/master
 [resolve conflicts]
 git push origin master:master

在這種情況下,您可以用rebase替換merge,而只需使用“他首先得到”決定提交順序的方法即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM