Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在git中查看传入的提交?_Git_Dvcs - Fatal编程技术网

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

如何在git中查看传入的提交?,git,dvcs,Git,Dvcs,可能重复: 如何在git中查看传入的提交?或者更好的是,看看我刚刚做的git-fetch/git-pulled 编辑:澄清问题:有人告诉我,为了得到一些修复,我应该从他们的存储库中提取。我的目标是在我接受他们之前看看他们的变化是什么git pull自动合并,这不是我想要的git fetch将在不合并的情况下抓取它们,但我不确定如何查看我刚刚拉进来的内容。使用原始措辞的原因是我通常使用Mercurial,其中的命令将是hg incoming——git似乎缺少模拟的命令。没有“incoming c

可能重复:

如何在git中查看传入的提交?或者更好的是,看看我刚刚做的
git-fetch
/
git-pull
ed

编辑:澄清问题:有人告诉我,为了得到一些修复,我应该从他们的存储库中提取。我的目标是在我接受他们之前看看他们的变化是什么
git pull
自动合并,这不是我想要的
git fetch
将在不合并的情况下抓取它们,但我不确定如何查看我刚刚拉进来的内容。使用原始措辞的原因是我通常使用Mercurial,其中的命令将是
hg incoming
——git似乎缺少模拟的命令。

没有“incoming commit”这样的东西,用户在本地提交并推送它们。我会打开gitx或gitk(git附带的),看看回购协议是什么样子。。。我想这会给你一个清晰的视角


使用:
gitk--all
查看。

您可能需要检查两个存储库之间的差异。假设您有一个本地分支“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

incoming
在git中并不是一个直接的映射,因为您可以(我经常这样做)有多个回购,并且每个回购都有多个分支

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

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

类似地,这将是:

git fetch && git log origin/master..

实际上,我只是手动键入这些内容(即使我为其中一个创建了别名)因为很容易让许多本地分支跟踪和被许多远程分支跟踪,并且很容易将它们保持在一起。

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

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

git whatchanged ..origin

这是通过“origin”显示“我现在所在的地方的共同祖先和origin”之间的提交的简写。当有人告诉你拉时,他们会给你repo URL和一个分支(默认为
master

我会的

git fetch URL branch
后跟一(按优先顺序递减):

我有时也会使用“
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'

问题不在于查看差异,而在于可视化用户所做的提交和拉取;如果这是显示日志而不是差异,那就太完美了。请看我澄清的问题。啊,我现在明白你的意思了,达斯汀的答案完全正确。感谢您提供更多详细信息。啊,与使用git手册中的git log相比,我更喜欢这一点:>鼓励新用户使用git log[1]。whatchanged命令与git log[1]基本相同,但默认显示原始格式的差异输出并跳过合并。>保留该命令主要是出于历史原因;许多在Git日志发明之前很久就通过阅读Linux内核邮件列表来学习Git的人的手指都经过了键入它的训练。另外,您可能想使用
Git diff--stat origin/master
来查看成功合并后
Git pull
显示的diffstat。谢谢您的回答@Dustin!我可以问一下,我不太明白
log..origin/master
这些圆点背后的魔力是什么?它并不是那么神奇,它显示在
git log
的概要中,并被描述为选项部分的第二个选项,然后会导致更详细的文档。更一般地说,如果您不在主分支上,请使用
git log..@{u}
查看当前本地分支的上游远程跟踪分支上的提交。@sschuberth这应该是答案。
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'