2017-04-06 104 views
0

我在我的倉庫兩個分支:master和devel的。我試圖合併devel到主,但得到了錯誤fatal: refusing to merge unrelated histories的Git替代主分支與無關的歷史

在GitHub上,主分支包含了我不關心,並不需要合併一些文件。我不需要保留主分支的歷史,我只是想用發展中的東西取代主。

一旦我得到devel的更新,以主,我要告訴我的夥伴怎麼拉主沒有融入主人的他的老本地副本。

我正在考慮從this後和運行使用的建議做:

git branch -m master old-master 
git branch -m devel master 
git push -f origin master 
git branch -d old-master 

你認爲這是否行得通呢?我應該告訴我的伴侶,讓他在完成這件事後獲得最新版本的副本?

回答

1

,你進了一個相當混亂的情況在這裏。
假設您的分支替換進行得順利,您需要詢問您的合作伙伴是否有變化,他不願意承擔任何責任。

  • 如果在他的身邊沒有改變,我會建議在克隆遠程倉庫和 從新鮮的開始。
  • 如果你的伴侶有變化,我會建議使區域分支的副本,採摘櫻桃的變化。

合作伙伴:

git checkout –b master_tmp master 
git checkout master_tmp 
git branch –D master 
git fecth 
git checkout master 
#Locate the changes you are missing 
git log master_tmp 
git cherry pick sha1x…sha1y # look at the documentation of cherry pick. 
#Resolve conflicts as usual 
git commit 
git push 
+0

支路替換進行得很順利。我的搭檔沒有從他身邊提交。他做git fetch有什麼問題,然後git reset --hard origin/master? – Casey

+0

你可以試試它,但爲什麼不安全地玩,並避免一些後來意想不到的伏都教。如果您不想克隆,可以使用-D和checkout刪除主。 –

+0

那麼運行git branch -D master,然後git fetch,git checkout master? – Casey

1

因爲混帳2.9的默認行爲已更改:用於允許合併結果表明,在默認情況下沒有共同 基地,這導致現有 項目的一個全新的歷史兩個分支

「混帳合併」創建,然後被一個不知情的維護者拉動,這允許將不必要的並行歷史合併到現有的 項目中。命令已被教導不是默認, 在 使用的是合併獨立地開始了他們的生活 兩個項目的歷史罕見的事件的逃生艙口--allow無關,歷史的選擇,讓這一點。

查看git release changelog瞭解更多信息。

您可以使用--allow-unrelated-histories強制合併發生。

例子:git pull origin branchname --allow-unrelated-histories