如何在 git 中查看传入的提交?

可能的复制品:
使用 Git 如何在本地和远程 之间查找修改过的文件

如何在 git 中看到传入的提交? 或者更好的是,看到我刚才的 git fetch/git pulled?

编辑: 为了澄清这个问题: 有人告诉我,为了获得一些修复,我应该从他们的存储库中提取。我的目标是看看他们的变化是 之前我接受他们。git pull自动合并,这不是我想要的。git fetch会抓住他们没有合并,但我不确定如何查看我刚才拉到的确切内容。原始措辞的原因是我通常使用 Mercurial,其中的命令是 hg incoming <repo name here> & mdash; 这个命令的 git 似乎缺乏类比。

78226 次浏览

不存在“传入提交”用户在本地提交并推送它们这样的事情。我会打开 gitx 或者 gitk (随 git 附带的) ,看看回购文件是什么样子的... ... 我想这会给你一个清晰的视图。

使用方法: gitk --all查看。

您可能希望检查两个存储库之间的区别。假设您有一个本地分支“ master”和一个远程跟踪分支“ source/master”,其他人在这两个分支中提交他们的代码,您可以得到关于这两个分支差异的不同统计数据:

git diff --summary master origin/master


git diff --stat master origin/master


git diff --numstat master origin/master


git diff --dirstat master origin/master


git diff --shortstat master origin/master


git diff --name-only master origin/master


git diff master origin/master

在 git 中,incoming并不是一个直接映射,因为你可以(我经常这样做)从多个回购协议中获取信息,而且每个回购协议都有多个分支。

如果存在与 hg 的传入命令等价的命令,那么它可能是:

git fetch && git log ..origin/master

也就是说,“从上游获取所有的东西,然后将我当前的分支与上游的主分支进行比较。”

同样,外汇储备将是这样的:

git fetch && git log origin/master..

实际上,我只是手动输入这些内容(尽管我为其中一个内容创建了别名) ,因为很容易让许多本地分支跟踪并被许多远程分支跟踪,而且将它们保持在一起也没有问题。

您可能还对 git whatchanged感兴趣,它可以很好地概述在某些提交范围内所做的更改。

如果您想查看要提交的内容,那么首先执行 git fetch,它只更新远程存储库的本地跟踪分支(而不是任何 你的分支) ,然后使用任何命令向您显示要提交的新内容。例如:

git whatchanged ..origin

这是通过“起源”来表示“我现在所在地方的共同祖先”和“起源”之间的提交的简写。

当有人告诉你拉,他们会给你的回购网址和一个分支(默认是 master)。

我就会这么做

git fetch URL branch

其次是1(按优先顺序递减) :

# note 3 dots in next 3 commands
gitk HEAD...FETCH_HEAD
# shows all commits on both sides since the "fork" point
gitk --cherry-pick HEAD...FETCH_HEAD
# as above but skips identical patches so you really see the differences
git log --graph --boundary --left-right --cherry-pick --decorate HEAD...FETCH_HEAD
# I have a nice alias for this; it's the text mode eqvt of the above

我有时也使用“ tig”,但是这个特定的用例(看到 都有边)不能很好地服务于 tig

但是,如果你把它降低到两个点(这可能更符合你的实际问题,虽然我仍然喜欢3点版本) ,你可以做什么

tig HEAD..FETCH_HEAD

为了方便起见,下面是一些化名:

incoming = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate HEAD..FETCH_HEAD'
outgoing = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate FETCH_HEAD..HEAD'