2014-09-10 242 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