无法看到使用git diff进行提交的更改
我想要的是查看针对本地回购的变更。
当我做git身份时,我得到:
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
正如我如何显示已经上演的更改所讨论的?
一(2)个git diff应该可以工作。 不幸的是,在我的情况下,他们都没有返回。
git diff //empty - which seems to be fine
git diff --cached //empty
git diff HEAD //empty
我错过了什么吗?
您已经完成了您的更改。
差异将显示您的索引和存储库之间的区别。
如果您想查看本地存储库到远程存储库的更改,请执行以下操作:
git fetch --all --prune
git log ^master origin/master
// or:
git log master ^origin/master
两行之间的区别在于一个会显示拉差,而另一个会显示推差。
你已经尝试了三种形式的git diff
:没有选项, - --cached
,并指定一个修订(在这种情况下, HEAD
)。 您链接到的问题的第二个答案显示了这三种形式的git diff
做的很好的图形总结。 这些都不是你想要的。
但是,还有更多的表格!
您可以要求git diff
比较两个特定的提交(修订版),例如:
git diff HEAD@{upstream} HEAD
要么:
git diff origin/develop develop
根据你所引用的git status
输出,这些将会做同样的事情,因为HEAD
目前与develop
相同(你在git status
输出中“正在分支开发”), HEAD@{upstream}
将解析为origin/develop
(“在'起源/发展'提前6次提交”)。 (请注意,在某些shell /命令行解释器中,您可能必须引用一个或两个大括号。)
你也可以使用:
git diff HEAD@{upstream}..HEAD
这个表示法与字面上的双点..
通常意味着别的:请参阅gitrevisions
文档以获取详细信息。 然而,在使用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
就会显示提交消息。 查看(很多)更多选项的git log
文档。
正如上面提到的代码向导,所有这些命令都使用git的“远程位置在哪里”的想法,基于上一次git调用远程并获取最新信息。 此信息可能已过时,甚至可能持续几秒钟,甚至几分钟或(喘气)小时。 :-)为了让当地的git上最新与遥控器,你必须运行git fetch
(额外的标志, --all
和--prune
,并不总是需要的,尽管它们可能取决于谁,你是个好主意'分享和如何)。 按照您的喜好经常或罕见地运行git fetch
; 记住,你可能会过几秒钟或几个月,git也不会在意:你想更新的频率是由你决定的。
这可能来得太晚。 但是,如果你使用OS X,并且你的git core.pager
或LESS环境变量有-F
选项。 有时候, git diff
什么都不显示。
( git
程序非常稳定,不太可能会遇到git错误,这似乎是OS X上的/usr/bin/less
错误。)