2012-11-02 152 views
4

我在使用git時遇到了一些有點奇怪的事情。我在我的Windows 7機器上使用git。git diff不會創建臨時文件

我想查看一些代碼更改,因此我激發了gitk來檢查我想要查看的提交內容。在我更改的文件列表中,我突出顯示了第一個文件,並可以看到左側的差異。但我已經超越比較,並右鍵單擊第一個文件並選擇「外部差異」。這工作正常,我可以在Beyond Compare中比較文件。

但是當我試圖對第二個文件做同樣的事情時,它失敗了。超越比較打開後,我可以看到兩個文件顯示在路徑中,但它們不存在。

當我看看我的文件系統時,我可以看到「git.gitk-tmp.7992」存在(文件夾參考),但它是空的,因此Beyond Compare和git difftool當然不能選擇它們。

當我嘗試在兩個分支之間做一個「git difftool」時會發生類似的情況。

我不明白爲什麼它不會創建這些臨時文件?!?

我希望有人能夠對此有所瞭解。

感謝

回答

3

我不知道除了比較那麼好,但我會試試看:

當你運行一個外部的差別是第一次,它推出BC。第二次,它啓動一個新的BC進程,它找到前一個進程,因此它向第一個實例發送消息,然後退出。

當你點擊gitk中的外部差異時,它會創建臨時文件,運行給定的命令,等待程序退出,然後刪除臨時文件。當你已經有一個BC實例時,第二個幾乎立即退出,所以你找不到它們。

這是我能做的最好 - 嘗試挖掘BC的手冊和論壇。

+0

嗨Gracchus,這是有道理的。我會嘗試一些東西,看看是否是這樣。感謝您的輸入! –

+0

我創建了這個名爲gitdiffallmaster的bash腳本(我知道...這個工作了一段時間並停止工作: '#!/ bin/sh cd $(git rev-parse --show-cdup) git diff --name-only master「$ @」|同時讀取文件名;做 混帳difftool 「$ @」 --no-提示 「主人:$文件名」, 「$文件名」 & 做 ' 但現在突然我得到這個錯誤消息: ' $ git的diffallmaster 使用:git diff [--no-index] ' 但是,我開始尋找你的建議之後,現在看起來好像經歷了GitK的工作。 –

2

gracchus的回答很有用,幫助我解決了我的問題。

在Beyond Compare的案例中,用戶應該在gitk中使用BComp.exe而不是BCompare.exe(我正在使用)。

BComp.exe:

這是一個Win32 GUI程序。如果從版本控制系統啓動,它應該工作得很好。如果從控制檯窗口啓動,控制檯(或批處理文件)不會等待它。

BCompare.exe:

這是最主要的應用。無論您打開了多少個窗口,每次只能運行一個副本。如果您啓動第二個副本,它會告訴現有副本開始比較並立即退出。