如何在 git 中查看传入的提交? 或者更好的是,看看我刚刚
git fetch
/git pull
编辑了什么?
编辑:为了澄清问题:有人告诉我,要获得一些修复,我应该从他们的存储库中提取。 我的目标是在我接受它们之前看看他们的改变是什么。 git pull
自动合并,这不是我想要的。
git fetch
将抓住它们而不合并,但我不确定如何查看我刚刚拉入的内容。原始措辞的原因是我通常使用 Mercurial,其中命令将是
hg incoming <repo name here>
- 该命令git 似乎缺少类似的东西。
incoming
并不是 git 中的直接映射,因为你可以(而且我经常这样做)有多个要从中提取的存储库,并且每个存储库都有多个分支。如果有与 hg 传入命令等效的命令,它可能是这样的:
git fetch && git log ..origin/master
也就是说,“从上游获取所有内容,然后将我当前的分支与上游主分支进行比较。”
同样,传出将是这样的:
git fetch && git log origin/master..
在实践中,我只是手动输入这些内容(即使我为其中一个创建了别名),因为很容易让大量本地分支跟踪并被大量远程分支跟踪,并且将它们保持在一起没有问题。
git fetch
,这只会更新远程存储库的本地跟踪分支(而不是任何您的分支),然后使用显示您的任何命令您即将拉取的新提交。例如:
git whatchanged ..origin
这是通过“origin”显示“我现在所在的共同祖先和起源”之间的提交的简写。
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
master
)。我就这么做
git fetch URL branch
后跟一个(按优先顺序降序排列):
# 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'
不存在“传入提交”用户在本地提交并推送它们的情况。我会打开 gitx 或 gitk(git 附带的)并查看存储库是什么样的......我认为这会给你一个清晰的视图。
使用:
gitk --all
查看。