git pull后如何查看代码更改?


87

我想检查一下之后的所有代码更改git pull。目前,它只是向我显示哪些文件已更改。如何查看更改的代码?


参考这个
unrealsoul007

Answers:


98
git log --name-status -2

将为您显示最近两次提交更改的文件名。

git log -p -2

会自动向您显示更改。

拉之前

git fetch
git log --name-status origin/master..

将显示您将要检索的提交以及文件名。


68

拉之前

您可以按照@iblue用fetch和来检查更改,然后diff再合并:

$ git fetch
$ git diff master...origin/master

请注意三倍周期,这意味着与共享的父对象和原件/母版(x以下标记的提交)存在差异:

SP---o---o [master]
  \
   x---x [origin/master]

拉后

拉取输出的第一行如下所示:

$ git pull
Updating 37b431a..b2615b4
...

然后,您可以简单地执行以下操作:

$ git diff 37b431a..b2615b4

或其他任何命令:

$ git log --name-status 37b431a..b2615b4

稍后的

如果自从您提出请求以来已经有一段时间了,并且您想知道上次请求带来了哪些更改,则可以使用以下命令进行查找:

$ git reflog | grep -A1 pull | head -2

它将在拉出之后显示哈希,然后在拉出之前显示哈希:

b2615b4 HEAD@{0}: pull : Fast-forward
37b431a HEAD@{1}: checkout: moving from v6.1 to master

然后,您可以使用以下两个哈希执行相同的操作:

git diff 37b431a..b2615b4

3
这是唯一的答案,它使您在不记得当时已提取了多少次提交的情况下,可以检查在上次提取期间哪些文件已更改。
kremuwa

22

因为git pull仅仅是一个快捷方式git fetch,并git merge可以运行git fetch来从原点的分支,然后合并之前表现出的差异。像这样:

git fetch                      # Load changes from remote server
git diff master origin/master  # Show differences
git merge origin/master        # Merge remote changes with local changes

如果您在与master不同的分支上运行,那么您当然应该在上面的命令中更改分支名称。


1
```git diff --name-only master origin / master [path]```
jiacheo

10

您可以将提取的内容与前一次提交的来源进行比较,

git diff branch_name@{1}

例如:

git diff master@{1}

为了与来源n进行比较,

git diff branch_name@{n}

2
这是一个很好的答案,但解释不正确:“为了与源进行比较,n会在后面提交”。该@{n}语法实际上表示分支/头部的nth先前位置。例如,如果已经有10个提交,因为你做了一个拉最后一次,master@{1}将参考现有位置master,这是10个提交之前。这就是为什么使用@{n}对拉后检查更改很有用。
wisbucky

这就是我一直在寻找的答案!感谢您的解释@wisbucky
tamerlaha

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.