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

时间:2009-08-25 22:31:31

标签: git dvcs

  

可能重复:
  Using Git how do I find modified files between local and remote

如何在git中看到传入的提交?或者甚至更好,看看我只是git fetch / git pull ed?

编辑:澄清问题:有人告诉我,要获得一些修复,我应该从他们的存储库中提取。我的目标是在接受之前了解他们的更改git pull自动合并,这不是我想要的。 git fetch会在没有合并的情况下抓住它们,但我不确定如何查看我刚刚插入的内容。原始措辞的原因是我通常使用Mercurial,命令将是hg incoming <repo name here> - 一个git似乎缺乏模拟的命令。

6 个答案:

答案 0 :(得分:172)

incoming并不是git中的直接映射,因为你可以(而且我经常这样做)有多个你需要的repos,每个repo都有多个分支。

如果有相当于hg的传入命令,则可能是这样的:

git fetch && git log ..origin/master

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

同样,传出就是这样:

git fetch && git log origin/master..

在实践中,我只是手动输入(即使我为其中一个创建了别名),因为很容易让很多本地分支跟踪并被许多远程分支跟踪,并且可以毫不费力地将它们保持在一起。 / p>

答案 1 :(得分:84)

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

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

git whatchanged ..origin

这是显示“我现在所在的共同祖先”和“原产地”之间通过“原产地”提交的简写。

答案 2 :(得分:11)

您可能想要检查两个存储库之间的区别。假设你有一个本地分支'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

答案 3 :(得分:6)

当有人告诉你拉,他们会给你一个repo 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'

答案 4 :(得分:1)

没有“传入提交”用户在本地提交并推送它们。我会打开gitx或gitk(git附带)并查看repos的样子......我认为这会给你一个清晰的看法。

使用:gitk --all查看。

答案 5 :(得分:0)

看一下这篇文章。 它向您展示了git 1.7版中引入的新功能的用法 Using Git how do I find changes between local and remote