如何在git pull之后看到代码更改?

uwe*_*uwe 68 git

我想在做完之后检查任何代码更改git pull.目前它只是向我显示哪些文件发生了变化.如何查看更改的代码?

Way*_*rad 76

git log --name-status -2
Run Code Online (Sandbox Code Playgroud)

将显示最近两次提交更改的文件的名称.

git log -p -2
Run Code Online (Sandbox Code Playgroud)

会告诉你自己的变化.

拉你之前,

git fetch
git log --name-status origin/master..
Run Code Online (Sandbox Code Playgroud)

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


quo*_*ian 58

拉之前

作为@iblue有说你可以查看改变fetchdiff合并之前:

$ git fetch
$ git diff master...origin/master
Run Code Online (Sandbox Code Playgroud)

注意三重周期,这意味着对共享父节点和源/主节点的差异(x下面标记的提交):

SP---o---o [master]
  \
   x---x [origin/master]
Run Code Online (Sandbox Code Playgroud)

拉了之后

pull的输出中的第一行看起来像这样:

$ git pull
Updating 37b431a..b2615b4
...
Run Code Online (Sandbox Code Playgroud)

然后你可以简单地做:

$ git diff 37b431a..b2615b4
Run Code Online (Sandbox Code Playgroud)

或者其他任何命令:

$ git log --name-status 37b431a..b2615b4
Run Code Online (Sandbox Code Playgroud)

稍后的

如果你已经拉了一段时间,并且你想知道最后一次拉动带来了什么变化,你可以查找:

$ git reflog | grep -A1 pull | head -2
Run Code Online (Sandbox Code Playgroud)

这将在pull之后显示哈希,然后是pull之前的哈希:

b2615b4 HEAD@{0}: pull : Fast-forward
37b431a HEAD@{1}: checkout: moving from v6.1 to master
Run Code Online (Sandbox Code Playgroud)

然后你可以用这两个哈希做同样的事情:

git diff 37b431a..b2615b4
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一一个允许您在最后一次拉动时检查哪些文件已更改的答案,此时您不记得当时提取了多少次提交. (3认同)

ibl*_*lue 17

因为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
Run Code Online (Sandbox Code Playgroud)

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


小智 11

您可以通过以下方式将提取的内容与上一次提交的来源进行比较,

git diff branch_name@{1}
Run Code Online (Sandbox Code Playgroud)

例如:

git diff master@{1}
Run Code Online (Sandbox Code Playgroud)

为了与后面的源 n 提交进行比较,

git diff branch_name@{n}
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的答案,但解释是不正确的:*“为了与后面的 n 次提交进行比较”*。`@{n}` 语法实际上表示分支/头的第 n 个前 **位置**。例如,如果自上次拉取后已经有 10 次提交,`master@{1}` 将引用 `master` 的前一个 **position**,即 10 次 **commits** 之前。这就是为什么使用 `@{n}` 在拉取后检查更改很有用。 (5认同)

San*_*kar 5

你可以通过这个检查在推拉时得到什么改变......

git log --stat
Run Code Online (Sandbox Code Playgroud)