2015-04-01 41 views
1

我經常發現自己想要打開在某個提交中更改過的所有文件。我目前的解決方案是這樣的,在一個別名:是否有一個git diff選項告訴我在diff中更改過的所有文件的相對名稱?

$EDITOR $(git diff --name-only --relative <commit names>) 

哪個效果很好,但是當我在一個子目錄,然後它不會打開任何已更改目錄之外的任何文件,因爲只有git diff --name-only --relative輸出文件在當前目錄中更改,而不是整個回購。有沒有一個標誌可以傳遞到git diff,使其包含回購庫中所有更改的文件,即使使用--relative

+0

作爲一個獎金,一種不列出二進制文件的方法將是方便的。 – Drew 2015-04-01 00:38:32

回答

1

Git自己的aliases允許您通過使用前導感嘆號定義別名來指定shell命令。這些shell命令別名總是從庫根執行,這樣你就可以在你已經在使用該命令一起在定義別名使用它們你.gitconfig

[alias] 
    review-diff = "!edit() { $EDITOR $(git diff --name-only --relative \"[email protected]\"); }; edit" 

然後你可以從任何地方在運行git review-diff存儲庫。

(注:我不知道當版本不同的是,但混帳的新版本似乎讓你跳過別名功能的包裝,使一個簡單的設置:)

[alias] 
    review-diff = "!$EDITOR $(git diff --name-only --relative \"[email protected]\")" 
+0

這似乎是非常接近,我有「diff-file-list ='!s $(git diff --name-only --relative \」$ @ \「)」'作爲別名(s是bash函數啓動我的編輯器),如果我做'git diff-file-list HEAD^HEAD',它會打開文件,但它也會打開一個名爲HEAD的新文件和一個名爲HEAD ^的文件。這有點訣竅,因爲我只是真的想要打開最近提交的文件,分階段更改或非暫存更改,並且我可以爲每個文件都設置一個別名,但更通用的解決方案會更好。 – Drew 2015-04-01 07:22:03

+0

您是否嘗試過使用該功能的較長版本(答案中的第一個)?這應該避免在最後附加參數的問題。 – 2015-04-02 04:16:54

相關問題