可能重复:
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似乎缺乏模拟的命令。
答案 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