2014-09-10 241 views
1

我有4個這樣的目錄: root/ | | |---dir1/ | |---file1.js | |---file2.js | |---dir2/ | |---file3.js | |---dir3/ | |---dir4/ | |----file23.js 我正在尋找一種模式,使用像git diff <pattern>來顯示所有這些文件在一個命令中的差異。
我已經試過git diff path/to/root/**/*.js,但它只顯示file1,file2和file3.js。Git diff pattern

謝謝!

EDIT:

具體而言,我想有位於控制器目錄中的所有我的js文件的差異。我已經試過git diff path/to/root/controllers/**/*.js

root/ | |---services/ | |---controllers/ | | |---dir1/ | |---controller1.js | |---controller2.js | |---dir2/ |---controller3.js | |---dir3/ |---dir4/ |----controller34.js

+0

你是要求在這些文件之間進行差異比較,還是比較這些文件中的差異? – folkol 2014-09-10 08:25:15

+0

@folkol我在尋找比較階段 – blackbrain 2014-09-11 16:22:14

+0

在這些文件中的差異看到我的答案,並問那裏如果有什麼不明確。 – folkol 2014-09-12 06:58:51

回答

1

git diff將默認顯示當前文件狀態和staging area,在庫中的所有文件之間的差異。

[[email protected] (master)]$ git diff 
diff --git a/dir1/file1.js b/dir1/file1.js 
index 3be9c81..c82de6a 100644 
--- a/dir1/file1.js 
+++ b/dir1/file1.js 
@@ -1 +1,2 @@ 
Line 1 
+Line 2 
diff --git a/dir1/file2.js b/dir1/file2.js 
index 3be9c81..c82de6a 100644 
--- a/dir1/file2.js 
+++ b/dir1/file2.js 
@@ -1 +1,2 @@ 
Line 1 
+Line 2 
diff --git a/dir2/file3.js b/dir2/file3.js 
index 3be9c81..c82de6a 100644 
--- a/dir2/file3.js 
+++ b/dir2/file3.js 
@@ -1 +1,2 @@ 
Line 1 
+Line 2 
diff --git a/dir3/dir4/file23.js b/dir3/dir4/file23.js 
index 3be9c81..c82de6a 100644 
--- a/dir3/dir4/file23.js 
+++ b/dir3/dir4/file23.js 
@@ -1 +1,2 @@ 
Line 1 
+Line 2 

編輯:再次

git diff -- '*js' 

編輯,由於更新的問題:如果你只在.js文件,文件感興趣,你可以使用這個模式如果你想在所有的.js文件控制器:

git diff -- controllers/*js 
+0

是的你是對的,但在這種情況下,我將會得到不太方便的整個工作空間的差異。即使指定.js文件也不夠準確。其實我只是想爲特定的目錄遞歸差異。 – blackbrain 2014-09-11 16:27:23

+0

好的,根據你最後的編輯更新答案! – folkol 2014-09-12 06:57:09

+0

謝謝先生,你讓我的一天! – blackbrain 2014-09-13 10:11:28