在git中查找以后对文件的更改

时间:2013-02-07 11:19:22

标签: git

我在git checkout之后用git clone检查了存储库的特定修订版(git告诉我,如果这很重要,我有一个分离的头)。现在,这个版本不能完全编译。看起来某些重构只是部分完成,我需要看看后来做了哪些更改。

我试过

git diff origin/master -- path/to/file

但是我认为我的文件是全新的。我得到了一个差异:

diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
new file mode 100644
index 0000000..19e1244
--- /dev/null
+++ b/drivers/usb/core/driver.c
(complete contents of the file follows)

对我没有任何帮助。我也尝试了git log的变体而没有成功。

理想情况下,我希望在以后的日期看到对文件所做的所有更改(与我工作副本中的更改相比)。一旦我找到了有趣的内容,我想看一下特定版本中的所有更改。

注意:在我的情况下,仅仅检查一个更高版本或分支是行不通的。该项目为不同的设备使用不同的分支,我已经获得了我正在处理的设备的最新提交。有一些较新的提交,重构完成,但它们没有我需要的所有设备特定的东西。

2 个答案:

答案 0 :(得分:1)

您缺少< commit>:

$ git diff -h
usage: git diff [<options>] [<commit> [<commit>]] [--] [<path>...]

因此,如果您提供当前提交(HEAD)和将来的提交,它将显示影响分离头和远程头之间的指定文件的所有差异。即:

git checkout HEAD~10
git diff HEAD origin/master -- path/to/file

从我当前在master上的位置移回10次提交,创建一个分离的头,然后显示在当前提交和原始提交之间影响该文件的所有更改。当然git diff HEAD~10 HEAD -- path/to/file无论如何都会从HEAD == master的常见情况中完成。

答案 1 :(得分:0)

与“Git: How can I reconcile detached HEAD with master/origin?”一样,您可以首先在分离的HEAD所在的地方建立一个temp分支,然后:

git diff origin/master temp -- /path/to/file