如何在 git 中查看传入的提交? [重复]

问题描述 投票:0回答:5

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

如何在 git 中查看传入的提交? 或者更好的是,看看我刚刚

git fetch
/
git pull
编辑了什么?

编辑:为了澄清问题:有人告诉我,要获得一些修复,我应该从他们的存储库中提取。 我的目标是在我接受它们之前看看他们的改变是什么。 git pull

自动合并,这不是我想要的。  
git fetch
 将抓住它们而不合并,但我不确定如何查看我刚刚拉入的内容。原始措辞的原因是我通常使用 Mercurial,其中命令将是 
hg incoming <repo name here>
 - 该命令git 似乎缺少类似的东西。

git dvcs
5个回答
216
投票

incoming

 并不是 git 中的直接映射,因为你可以(而且我经常这样做)有多个要从中提取的存储库,并且每个存储库都有多个分支。

如果有与 hg 传入命令等效的命令,它可能是这样的:

git fetch && git log ..origin/master

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

同样,传出将是这样的:

git fetch && git log origin/master..

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


96
投票
您可能还对

git whatchanged

 感兴趣,它很好地概述了某些提交范围内所做的更改。

如果您想查看要拉取的内容,请先执行

git fetch

,这只会更新远程存储库的本地跟踪分支(而不是任何 
您的分支),然后使用显示您的任何命令您即将拉取的新提交。例如:

git whatchanged ..origin
这是通过“origin”显示“我现在所在的共同祖先和起源”之间的提交的简写。


18
投票
您可能想检查两个存储库之间的差异。假设您有一个本地分支“master”和一个远程跟踪分支“origin/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
    

9
投票
当有人告诉您拉取时,他们会给您存储库 URL 和分支(默认为

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'

1
投票

不存在“传入提交”用户在本地提交并推送它们的情况。我会打开 gitx 或 gitk(git 附带的)并查看存储库是什么样的......我认为这会给你一个清晰的视图。

使用:

gitk --all
查看。

© www.soinside.com 2019 - 2024. All rights reserved.