簡體   English   中英

git合並后同步2個分支

[英]Syncing 2 branches after git merge

如何保持 2 個 Git 分支同步?

我目前有一個master分支和一個gh-pages分支以及各自的遙控器。 每當我按如下方式提交時, mastergh-pages分支都共享相同的提交 ID:

git checkout master
git commit -am "message"
git checkout gh-pages
git merge master

我的日志看起來像這樣(使用git log --graph --oneline --all --decorate ):

單跟蹤圖

在我解決了合並沖突之后,每個合並都會收到自己的提交:

雙軌圖

我的問題是,如何對齊 2 個分支,以便像以前一樣在單個“圖形軌道”上進行合並?

我試圖根據這個答案pull ,但無濟於事。

它看起來像犯50b6dec加入到gh-pages分支,並承諾e43c01f被上進行master在同一時間,這是什么原因造成合並沖突。

因此, gh-pages有 1 個master沒有的提交。 因此,此后任何時候合並時,Git 都無法進行快進合並。 (快進合並為您提供了以前的線性歷史。)因此,解決方案是:

git checkout master
git merge gh-pages

為了防止將來再次發生這種情況,請將您的流程更改為:

git checkout master
git commit -am "message"
git checkout gh-pages
git merge --ff-only master

如果gh-pagesmaster沒有的任何提交,則--ff-only標志將中止合並並出現錯誤。


如果你想改寫歷史,讓它仿佛從未發生過,你也可以這樣做。

首先,確保您在master

git checkout master

現在變基:

git rebase 50b6dec

您將不得不再次解決該沖突。 完成后,執行:

git rebase --continue

當 rebase 完成后,你必須強制更新origin

git push --force-with-lease origin master

您還必須移動gh-pages分支。 做:

git branch -f gh-pages master
git push --force-with-lease origin gh-pages

這會給你一個看起來像這樣的歷史:

* f218f70' (HEAD -> master) Added Scatterplot functionality to check ratings
* cb79b79' Squashed bug
* fcf0d8a' Small change
* e43c01f' Small change
* 50b6dec Small change
* a217267 Small change

強制性警告:由於 rebase 會重寫歷史記錄,因此對於在此分支上工作的任何其他人來說,這可能是危險的/具有破壞性的。 確保您與正在合作的任何人清楚地傳達您所做的事情。

暫無
暫無

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

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