2014-01-26 55 views
6

我遵循JörgW Mittag的回答this post,並將meld配置爲我的git中的difftool。現在,我可以查看和比較不同分支的文件的差異完全與這個命令:Git - 在保存時發生的變化(作爲difftool)未保存

git checkout branch1 
git difftool branch1:file.f90 branch2:file.f90 

我執行上述命令,取得並保存在MELD變化。但是,當我檢查使用的文件時:

emacs file.f90 

我早先在融合中所做的更改根本沒有保存。我不明白爲何如此;我必須沒有完全正確地配置融合作爲diff工具。有誰能幫我解決這個問題嗎?謝謝!!

回答

3

因爲您已明確給出了兩個文件的分支有區別,所以meld正在處理這兩個文件的臨時副本。試試給出未簽出分支的名稱:file;這應該會導致將給定分支文件的臨時副本與具有相同名稱的已檢出文件進行比較。

1

爲了保存您的更改,您需要將某個分支與當前工作文件進行比較。

你的情況:

git checkout branch1 
git difftool branch2:file.f90 file.f90 

或者,您也可以比較整個分支的工作目錄並保存更改過。我已經提供了更多詳細的,在這裏:https://stackoverflow.com/a/22535996/2178047

1

爲了避免需要指定文件名的兩倍,使用以下命令:

git difftool branch -- file 

這將在工作樹file比較branch:file

此外,爲了diff的整個工作樹branch,用途:正如在其他的答案中提到

git difftool --dir-diff branch 

,如果你需要diff的branchother_branch(從什麼是目前已簽出一些分支不同)在使用上述命令之前,您必須先檢查other_branch

+0

優秀的答案@馬克,這是執行此任務最簡單的命令。謝謝! – Gabriel