mercurial - 如何解決這個水銀衝突?




merge merge-conflict-resolution (2)

我對Mercurial和Python感到沮喪,因為它讓事情變得很困難。 我有一個微不足道的衝突,因為Mercurial沒有給出任何建議該怎麼辦我不知道甚至如何解決這個瑣碎的文件衝突:

衝突是微不足道的,但如果我不能解決這個問題,我也解決不了任何復雜的問題。 我是否可以按照我想要的方式編輯文件並從任何地方再次提交? 我應該運行hg merge ? 為什麼Mercurial甚至不能讓我選擇一個版本來保存? 為什麼沒有挖掘1000個寫得不好的人手,幾乎無法做到這一點?


您需要查看KDiff3文檔 ,特別是關於合併和輸出窗口的部分 。 要解決這個衝突,你需要決定一線或一線是否是正確的選擇。 這個決定是你自己做的,沒有工具可以知道你是否意味著這個或那個。

在KDiff3中,按Ctrl + 2選擇live ,按Ctrl + 3選擇january或右鍵單擊底部窗口邊緣,選擇你想要的直線。 您也可以單擊底部的窗口並手動編輯該行。

Mercurial讓我們以任何你喜歡的方式配置你的合併工具 。 TortoiseHg提供了一個默認的配置,將KDiff3放在列表的頂部,但是如果你喜歡,你可以使用其他工具。 合併工具實際上只是一個接受四個文件名的程序:要比較的三個文件(base,parent 1,parent 2)和一個輸出文件名。

要解決命令行上的衝突,您需要啟動一個合適的命令行三路合併工具。 你可以例如如果你喜歡與vim合併 。 (恐怕我對vimdiff一無所知,我自己用KDiff3。)

如果你不喜歡看到合併工具彈出,那麼你可以設置

[ui]
merge = internal:merge

使Mercurial只使用內部的三方合併。 當編輯沒有衝突時它會合併文件。 當發生衝突時,文件被標記為“未解決”,衝突標記存儲在文件中。

然後您需要手動編輯文件來獲取您想要的版本。 您也可以重新合併並選擇本地(您的)版本:

$ hg resolve --tool internal:local your-file

或其他版本:

$ hg resolve --tool internal:other your-file

你完全用hg resolve your-file重新開始合併。 該文件需要被標記為“已解決”,然後才能提交。 這是用hg resolve --mark your-file 。 請參閱hg resolve --list查看當前合併的狀態。


Base是本地系統中的以前版本,Parent 1是您當前的更改,Parent 2是來自Server的文件。

如果您需要檢入您的更改,請在合併菜單中的任意位置選擇B. 如果您需要本地計算機上的最新服務器版本,請在合併菜單中的任意位置選擇C.





kdiff3