我想要的是查看我的本地仓库对远程仓库所做的更改。
当我 git status 时,我得到了:
On branch develop
Your branch is ahead of 'origin/develop' by 6 commits.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
如How do I show the changes which have been staged?
中所述一个(两个)git差异应该可以工作。不幸的是,在我的情况下,所有这些都没有返回。
git diff //empty - which seems to be fine
git diff --cached //empty
git diff HEAD //empty
我错过了什么吗?
答案 0 :(得分:2)
您尝试过三种git diff
形式:无选项,--cached
,并指定单个修订版本(在本例中为HEAD
)。您链接的问题中的第二个答案显示了这三种git diff
形式的完整图形摘要。这些都不是你想要的。
但是,还有更多表格!
您可以要求git diff
比较两个特定的提交(修订版),例如:
git diff HEAD@{upstream} HEAD
或:
git diff origin/develop develop
根据您引用的git status
输出,这些内容会做同样的事情,因为HEAD
目前与develop
相同(您在分支机构开发" #34;在git status
输出中),HEAD@{upstream}
将解析为origin/develop
("提前/开发'来自6个提交" )。 (请注意,在某些shell /命令行解释器中,您可能必须引用一个或两个花括号。)
您也可以使用:
git diff HEAD@{upstream}..HEAD
这种带有文字两点..
的表示法通常意味着其他内容:有关详细信息,请参阅the gitrevisions
documentation。但是,在使用git diff
时,前端命令只会将此解析为两个指定的提交,然后使用这两个提交。
我认为你会得到更多 - 而且更典型的是你想要的东西:
git log -p HEAD@{upstream}..HEAD
因为这将分别显示每个提交,以及这些提交所做的更改。 Git通过将每个提交与其父提交进行比较来查找这些更改。 (这也是git如何确定哪些提交 那六个。这是以相当图形理论的形式在"指定范围"部分中描述的。)本质上, git log -p
查看要显示的每个提交,然后在该提交的父级和提交之间执行git diff
。
对于合并提交,git log -p
的输出(以及git show
的输出,如git log -p
但仅显示特定提交或其他对象,您要求它显示,而不是像git log
这样的提交历史记录被修改:git显示了一个"组合差异"默认情况下,它试图突出显示合并过程中发生的事情,而不是两个分支中发生的事情。你现在不需要了解这一点,只记得在记录或显示合并时,git隐藏了不必要的复杂性(在你需要之前这很好;然后搜索StackOverflow :-))。
如果遗漏-p
,git log
只会显示提交消息。有关(多个)更多选项,请参阅the git log
documentation。
作为codeWizard noted above,所有这些命令都使用git"其中遥控器是"基于最后一次git调用遥控器并获取最新信息。此信息可能已过期,甚至可能是几秒钟,甚至几分钟或(喘息)小时。 :-)要让你的本地git与遥控器保持同步,你必须运行git fetch
(额外的标志,--all
和--prune
,并不总是需要它们,尽管它们可能是一个好主意,取决于你与谁共享和如何分享。根据您的喜好,经常或很少地运行git fetch
;请记住,您可能会在几秒钟或几个月内过时,并且git不会在任何方面关心:您想要更新的频率由您决定。
答案 1 :(得分:1)
您已提交更改。
Diff将显示索引和存储库之间的区别。
如果要查看本地存储库与远程存储库之间的更改,请执行以下操作:
git fetch --all --prune
git log ^master origin/master
// or:
git log master ^origin/master
两行之间的区别在于,一行将显示拉差异,而第二行将显示推送差异。
答案 2 :(得分:0)
这可能为时已晚。但是,如果您使用的是OS X,并且您的git core.pager
或LESS环境变量具有-F
选项。有时git diff
没有显示任何内容。
(git
程序非常可靠,你不太可能遇到git的错误。这似乎是OS X上/usr/bin/less
的错误。)
答案 3 :(得分:-1)
您有远程存储库中不存在的提交。 git diff
不是一个可以为您提供任何相关信息的命令。
Git diff
显示您尚未提交对本地存储库的更改。由于这个原因,你没有在你的差异中得到任何东西。您没有对本地存储库进行任何更改。
Git知道几个“阶段”
git diff
git commit
并且git add
引入此阶段,则会提交此内容。您可以使用git diff --cached