手動合併兩個文件,我想通過做合併兩個文件中的以下內容:使用DIFF
- 輸出兩個文件的差異到一個臨時文件,並
- 手動選擇我想要的行復制/保存。
這裏的問題是,diff -u
只給我一個上下文的文件行,而我想輸出統一格式的整個文件。
有沒有什麼辦法比較可以做到這一點?
手動合併兩個文件,我想通過做合併兩個文件中的以下內容:使用DIFF
這裏的問題是,diff -u
只給我一個上下文的文件行,而我想輸出統一格式的整個文件。
有沒有什麼辦法比較可以做到這一點?
「我想以統一的格式輸出整個文件。diff有沒有辦法做到這一點?
是的。
diff -U 9999999 file1.txt file2.txt > diff.txt
這應該可行,只要你的文件長度少於1000萬行。
一種選擇可能適合該法案對你來說,
sdiff
:並排側DIFF文件。
sdiff -o merged.file left.file right.file
一旦出現,它會提示你你想從哪個文件保持什麼線路。點擊?
,然後enter
獲得一點幫助。還有man sdiff
同詳細商品。
(在我的發行,這些都打包在「diffutils的」包[Fedora的,CentOS的])
如果您需要自動化的過程中,你可能會想嘗試UTIL merge
,這將標誌着衝突文件。但是,這可能會讓你回到原點。
簡單的答案是使用-D標誌合併文件並用C風格#ifdef語句包圍差異。
從文檔:
$ diff -D NEWSTUFF file1 file2 > merged_file
我平時則只需打開該合併的文件在編輯器中,並通過手動來解決合併衝突:
-D NAME --ifdef=NAME
Output merged file to show `#ifdef NAME' diffs.
您可以按如下方式使用它。
您也可以使用選項輸出ed腳本等
您可以合併/使用兩個文件合併與差異 -
diff --line-format %L file1 file2
我知道很多人喜歡在使用vim diff模式來做到這一點,並有幾個插件,使三個緩衝區(舊的,合併,'新')更好地工作。 – demure
有什麼問題?只需刪除不想要的補丁部分,然後修補該文件即可。另請注意[git cherry picking](https://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html)。這正是你想要做的 – hek2mgl