可能重复:
使用Git如何在本地和远程之间找到修改过的文件
如何在git中看到传入的提交?甚至更好,看看我刚刚git fetch/ git pullED?
编辑: 澄清问题:有人告诉我,要获得一些修复,我应该从他们的存储库中提取.我的目标是在接受之前了解他们的变化. git pull自动合并,这不是我想要的. git fetch我会在没有合并的情况下抓住它们,但我不确定如何查看我刚刚插入的内容.原始措辞的原因是我通常使用Mercurial,其中命令是hg incoming <repo name here>-a命令,git似乎缺少模拟.
Dus*_*tin 181
incoming 在git中并不是一个直接的映射,因为你可以(我经常这样做)有多个你需要的repos,每个repo都有多个分支.
如果有相当于hg的传入命令,它可能是这样的:
git fetch && git log ..origin/master
Run Code Online (Sandbox Code Playgroud)
也就是说,"从上游获取所有内容,然后将我当前的分支与上游主分支进行比较."
同样,传出将是这样的:
git fetch && git log origin/master..
Run Code Online (Sandbox Code Playgroud)
在实践中,我只是手动输入(即使我为其中一个创建了别名),因为很容易让很多本地分支跟踪并被许多远程分支跟踪,并且可以毫不费力地将它们保持在一起.
Gre*_*ill 86
您可能也感兴趣,git whatchanged它可以很好地概述在某些提交范围内所做的更改.
如果你想回顾一下你即将拉开,做git fetch第一,只有更新本地跟踪分行远程仓库(而不是任何的你的分支机构),然后使用说明你的新提交的任何命令你"重新拉.例如:
git whatchanged ..origin
Run Code Online (Sandbox Code Playgroud)
这是通过"起源"显示"我现在所在的共同祖先"与"起源"之间的提交的简写.
Net*_*rat 13
您可能想要检查两个存储库之间的差异.假设你有一个本地分支'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
Run Code Online (Sandbox Code Playgroud)
小智 6
当有人告诉你拉,他们会给你一个repo URL和一个分支(默认为master).
我只是这样做
git fetch URL branch
Run Code Online (Sandbox Code Playgroud)
然后是一个(按优先顺序递减):
# 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
Run Code Online (Sandbox Code Playgroud)
我也用" tig"有时,但这个特定用例(看到这两个双方)没有很好地提供服务tig.
但是,如果你把它降低到两个点(这可能更接近你的实际问题,虽然我仍然喜欢3点版本),你可以做
tig HEAD..FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)
为方便起见,这是别名:
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'
Run Code Online (Sandbox Code Playgroud)