1

git checkout我用after检查了存储库的特定修订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没有成功的变体。

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

注意:在我的情况下,仅签出以后的修订版或分支是行不通的。该项目为不同的设备使用不同的分支,并且我已经获得了我正在使用的设备的最新提交。在重构完成的地方有更新的提交,但它们没有我需要的所有设备特定的东西。

4

2 回答 2

1

您缺少一个 <commit>:

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

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

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

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

于 2013-02-07T13:27:47.360 回答
0

如“ Git: How can I reconcile detached HEAD with master/origin? ”中,您可以先temp在分离的 HEAD 所在的位置创建一个分支,然后:

git diff origin/master temp -- /path/to/file
于 2013-02-07T12:11:52.013 回答