爲了真正實現「合併」兩個文件,你需要一個「基地」版本,從他們都得出。否則,計算機無法區分一個文件中的添加和另一個文件中的刪除之間的區別,因此它無法分辨哪個版本更新,並且無法進行任何自動更改(即,每次更改都會產生衝突)。例如:
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
...
如果沒有一個基本文件,有沒有辦法告訴這裏發生了什麼,所以目前還不清楚如果file1
或file2
是正確的版本。
如果你有一個基本版本住進混帳,說在提交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.txt
和friends.txt
),然後運行git merge-file mine.txt base.txt friends.txt
將您的朋友的更改合併到mine.txt
實際上生成並提交或新的分支。
最後,如果你沒有基礎文件,你可以做的最好的是手動檢查和編輯兩個文件之間的差異。您可以
- 寫的
git diff
輸出到文件中,手動編輯結果得到你想要的文件(當然,你需要刪除的縮進是DIFF增加至文件同意的領域)
- 使用視覺差異工具 - Emacs有一個很好的視覺差異模式(例如,
M-x ediff-merge-files
),讓你看到每個改變並排並選擇你想要的版本與擊鍵,並且許多其他編輯將有類似的設施
嗨再次,任何方式來合併文件從藏匿? ..當我做混帳藏匿流行,它說該文件已經存在,所以我需要嘗試併合並它。 – Aurimas