远程和本地之间的git diff(忽略非推送提交)

时间:2013-03-12 19:43:29

标签: git

我希望看到在git fetch之后查看给定远程分支上的更改的最佳方法,但我想忽略我已提交的更改(但未推送/合并)。一般来说,我的流程是

 git commit
 git commit # something else
 git fetch
 git diff HEAD^^..origin/stable # HEAD^^ is the commit right before my two commits above

想知道是否有办法处理那个HEAD ^^来向我展示我所知道的起源/稳定(在这种情况下,HEAD ^^)和获取后的起源/稳定之间发生了什么变化。

基本上,我希望看到自上次提取以来所有新代码都提交给分支,忽略了我在本地分支上的任何暂存(或未分阶段)更改。

感谢您的帮助。

解决方案

根据@ carl-norum在下面的回答,我将以下内容添加到.git / config

 [alias]
    fetch-diff = !git fetch 2>&1 | awk '/[a-z0-9]+[.][.][a-z0-9]+/ { print $1 }' | xargs -L 1 git diff

现在使用git fetch-diff来获取和打印每个分支的差异。

1 个答案:

答案 0 :(得分:2)

git diff HEAD^^ origin/stable

应该完全按照您的意愿行事。但是,fetch操作应该为您提供一些输出,如:

76e5999..0564fab  master     -> origin/master

显示origin/master(在我的示例中)更改了哪些哈希值。你可以这么做:

git diff 76e5999 0564fab

并查看所有这些差异。