探索git存储库以查找影响特定区域的更改

时间:2011-02-22 15:25:36

标签: git

我注意到我的git存储库中某些makefile缺少变量定义的问题,我想在所有提交历史记录中搜索以查找变量集中我的变量TESTDIR发生的位置

我会怎么做?

欢呼声

2 个答案:

答案 0 :(得分:4)

您可以使用git log -p FILENAME来显示文件的历史记录,它显示每个版本之间的差异,您应该能够在那里找到您的更改。

类似于:git log --pretty=format:"%h" -p Makefile给我一个这样的输出:

$ git log --pretty=format:"%h" -p Makefile
bd45eb7
diff --git a/Makefile b/Makefile
index 58395fa..8bd4e94 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,2 @@
-1
-12
 22
 32

91f610d
diff --git a/Makefile b/Makefile
index d00491f..58395fa 100644
--- a/Makefile
+++ b/Makefile
@@ -1 +1,4 @@
 1
+12
+22
+32

15a8456
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1 @@
+1

如果更改仍在Makefile中,您可以使用git blame查找放入的修订版。

答案 1 :(得分:4)

如果您使用git diff -STESTDIR,它会显示引入或删除了哪些更改集TESTDIR。来自git-log man page

  

-S<串GT;              查找引入或删除< string>实例的差异。请注意,这与简单地出现在diff输出中的字符串不同;看到了              gitdiffcore(7)中的pickaxe条目有关详细信息。

另请查看该手册页中--pickaxe-all下方所述的--pickaxe-regex-S