2017-04-01 46 views
0

我在項目中粘貼了另一個文件版本,它有增加和刪除。我想僞造一個合併到當前提交的版本,以便我可以比眼睛比較文件更容易看到和解決衝突。如何在進行更改後僞造文件合併?

如何將修改後的文件(工作樹)合併到同一個文件的HEAD版本中?

config/routes.rb # (1) commited version HEAD 
config/routes.rb # (2) modified version in working tree 

我已經粘貼從我的朋友給我發到我的現有航線的文件的文件(2)config/routes.rb(1)。

感謝

回答

3

爲了真正實現「合併」兩個文件,你需要一個「基地」版本,從他們都得出。否則,計算機無法區分一個文件中的添加和另一個文件中的刪除之間的區別,因此它無法分辨哪個版本更新,並且無法進行任何自動更改(即,每次更改都會產生衝突)。例如:

file1: 
... 
here is a line 
this line was added in file 1, or was it deleted in file 2? 
here's the next line 
... 

file2: 
... 
here is a line 
here's the next line 
... 

如果沒有一個基本文件,有沒有辦法告訴這裏發生了什麼,所以目前還不清楚如果file1file2是正確的版本。

如果你有一個基本版本住進混帳,說在提交123abc然後做最簡單的方法是:

  • 確保你的樹是乾淨的(即,將新版本的出路並重新籤你的頭型)
  • git branch topic_merge_friends_changes 123abc建立在臨時黨支部提交包含基本版本
  • 退房分支:git checkout topic_merge_friends_changes - 注意,這可以使用-b前面的步驟相結合國旗與checkout
  • 現在,將新文件放到地方,git commit
  • 切換回主:git checkout master
  • git merge topic_merge_friends_changes

或者,你可以跳過犯和合並,取而代之的是基本副本版本(稱爲base.txt)和後兩個版本(mine.txtfriends.txt),然後運行git merge-file mine.txt base.txt friends.txt將您的朋友的更改合併到mine.txt實際上生成並提交或新的分支。

最後,如果你沒有基礎文件,你可以做的最好的是手動檢查和編輯兩個文件之間的差異。您可以

  • 寫的git diff輸出到文件中,手動編輯結果得到你想要的文件(當然,你需要刪除的縮進是DIFF增加至文件同意的領域)
  • 使用視覺差異工具 - Emacs有一個很好的視覺差異模式(例如,M-x ediff-merge-files),讓你看到每個改變並排並選擇你想要的版本與擊鍵,並且許多其他編輯將有類似的設施
+0

嗨再次,任何方式來合併文件從藏匿? ..當我做混帳藏匿流行,它說該文件已經存在,所以我需要嘗試併合並它。 – Aurimas

相關問題