2013-02-13 47 views

回答

2

謝謝大家的答覆,但我發現,對我來說,最準確的解決方案:

git diff --name-only -- '*.xml' | sed 's, ,\\&,g' | xargs git checkout -- 

sed的是用戶逃離這困擾xargs的,一切都工作得非常快速,準確的空間。

+0

看到我的回答,你不需要所有這些:) – CharlesB 2013-02-13 23:42:07

37

你不需要findsed,您可以使用通配符作爲git的理解他們(不依賴於你的shell):

git checkout -- "*.xml" 

引號會阻止你的shell擴展命令只文件在執行之前在當前目錄中。

您還可以禁用外殼擴展的glob(使用bash):

set -f 
git checkout -- *.xml 

這,當然,將無可挽回地刪除你的變化!

+1

'*/*。xml'不是「所有目錄中的xml文件」。 – wRAR 2013-02-13 22:59:13

+0

@wRAR發現它...... git中的globbing沒有很好的記錄 – CharlesB 2013-02-13 23:09:29

+1

'**/*。xml'將使用你的shell globs,所以刪除的文件將不會被檢出,但如果它只是改變,應該工作。 – Reactormonk 2013-02-13 23:25:22

-1
find . -name '*.xml' -print0 | xargs -0 git checkout HEAD 

或等價的東西,如果你的系統沒有findxargs。或者只是git checkout HEAD **/*.xmlzsh或任何其他殼與這種形式的要求globbing。

相關問題