【发布时间】:2012-07-02 07:36:33
【问题描述】:
我想在执行git pull 后检查任何代码更改。目前它只是向我显示哪些文件发生了变化。如何查看更改的代码?
【问题讨论】:
-
参考this。
-
搜索答案“拉后”。接受的答案没有回答 在 执行
git pull之后要做什么
标签: git
我想在执行git pull 后检查任何代码更改。目前它只是向我显示哪些文件发生了变化。如何查看更改的代码?
【问题讨论】:
git pull 之后要做什么
标签: git
git log --name-status -2
将显示最近两次提交更改的文件的名称。
git log -p -2
将显示更改本身。
在你拉之前,
git fetch
git log --name-status origin/master..
将显示您将要检索的提交以及文件的名称。
【讨论】:
您可以在合并前使用fetch 和diff 来查看@iblue 所说的更改:
$ git fetch
$ git diff master...origin/master
注意三重句点,这意味着与共享父节点和源/主节点的差异(下面标记为 x 的提交):
SP---o---o [master]
\
x---x [origin/master]
pull 输出的第一行如下所示:
$ 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
【讨论】:
因为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 不同的分支上运行,你当然应该在上面的命令中更改分支名称。
【讨论】:
您可以将拉取的内容与前一次提交的来源进行比较,
git diff branch_name@{1}
例如:
git diff master@{1}
为了与后面的 n 个提交进行比较,
git diff branch_name@{n}
【讨论】:
@{n} 语法实际上表示分支/头的nth 前一个位置。例如,如果自您上次拉取以来已经有 10 次提交,master@{1} 将引用 master 的先前 位置,即 10 个 提交事先的。这就是为什么使用 @{n} 在拉取后检查更改很有用的原因。
master^n
你可以通过这个来检查推拉时有什么变化......
git log --stat
【讨论】: