2012-12-14 80 views
10

我在我的機器上有兩個本地git分支 - 一個名爲「v2」的分支和一個名爲「master」的分支。我將v2合併到主人,而主人被簽出和頭部分支。在git合併衝突中,我如何保留被合併的版本?

我想將「v2」分支合併到「主」分支中。當我進行合併時,我必須逐一解決一些衝突。

對於每一個衝突,我該如何保持「V2」的分支辦公室文件,而不是「主」分支版本的文件?

通過Git的塔呈現在我面前的這些類型的衝突的選項有:

  • 馬克文件名作爲通過保持FILENAME手動解決
  • 解決
  • 決心,刪除文件名
  • 恢復自己的版本FILENAME
  • 在外部應用程序中打開

根據我的理解,「保留」文件的選項意味着保留「v2」版本(合併的文件)和「刪除」文件意味着不添加「v2」版本(但保留現有的「主」 「版本)。但是,當我使用刪除選項時,它實際上從回購庫中刪除了該文件。

我如何保持「V2」的分支辦公室文件,而不是「主」分支版本爲這些類型的衝突的文件?

+0

dup:http://stackoverflow.com/questions/1823650/using-git-how-to-do-a-use-theirs-during-a-conflict – jchapa

+0

我在問具體相關的Git Tower客戶端,在這種情況下,您提供的鏈接無法回答我的問題。 –

+0

好點 - 對不起,我爲git提供了一般答案。 – jchapa

回答

16

即使您使用Git塔,你可以下降到命令行,然後使用

git checkout --theirs file.txt 

這裏一些關於它的文檔:如果您只想

http://gitready.com/advanced/2009/02/25/keep-either-file-in-merge-conflicts.html

使用git tower,按原樣完成合並,然後簽出該文件的其他分支的版本。現在階段並提交修改 - 如果可能的話。

Git已經發展成爲一個命令行工具。對於我曾經使用的其他所有工具,我總是在功能上存在差距。我選擇了擁抱而不是去爭取Git的設計。

此外,您可以掛鉤類似超越比較,並在你的問題中提到選擇「外部工具」。在那裏,你可以選擇「他們的」一面。

+0

Git Tower沒有選項可以在查看合併衝突時簽出單個文件... –

+1

只需下拉到命令行即可,無論您使用什麼工具,Git的狀態都是一樣的。我的建議是使用從命令行git。您可以獲得許多好處:腳本功能,管道,選項卡完成,會話到會話歷史記錄等。 –

+0

不幸的是,這並沒有回答我的問題。我使用Git Tower是有原因的,並且特意要求在此應用程序中如何執行此操作。 –

5

如果你正在尋找讓V2手了(我想師傅看起來就像V2),我認爲最簡單的方法是:

  • 結帳你想要的分支合併
  • 合併主與ours戰略
  • 結帳主
  • 合併分支分支

竟被它ð看起來像這樣:

git checkout v2 
git merge -s ours master 
git checkout master 
git merge v2 

如果你只是想這種類型的分辨率只發生在衝突,那麼你可以做:

git checkout master 
git merge -s recursive -Xtheirs v2 

您可以git的文檔here在合併策略讀了。

UPDATE:不幸的是,我不認爲Git Tower公開了一種方法來做到這一點。 :-(