如何区分本地未提交的更改和原点
假设我克隆了一个存储库并开始修改文件。 我知道,如果我有本地未提交的更改,我可以做一个比较如下的git diff test.txt
,它会显示当前本地HEAD和文件中修改,未提交的更改之间的区别。 如果我提交这些更改,我可以使用git diff master origin/master
其与原始存储库进行git diff master origin/master
但是在本地提交之前,是否有任何方法可以区分服务器上原始存储库的本地更改? 我尝试了各种各样的git diff --cached master origin/master
排列,没有运气。
鉴于远程仓库已通过git fetch
进行caching,应该可以与这些提交进行比较。 尝试以下操作:
$ git fetch origin $ git diff origin/master
我知道这不是一个确切的问题的答案,但我发现这个问题看起来不同的文件分支和本地未提交的文件,我想我会分享
句法:
git diff <commit-ish>:./ -- <path>
例子:
git diff origin/master:./ -- README.md git diff HEAD^:./ -- README.md git diff stash@{0}:./ -- README.md git diff 1A2B3C4D:./ -- README.md
(感谢埃里克Boehs的方式不必input文件名两次)
查看对现有文件的非暂存(未添加)更改
git diff
请注意,这不会跟踪新文件。 看到上演,非承诺的变化
git diff --cached
如果您想以可视方式比较文件,可以使用:
git difftool
它会自动启动您的差异应用程序为每个更改的文件。
PS:如果你没有设置一个差异的应用程序,你可以像下面的例子(我使用Winmerge ):
git config --global merge.tool winmerge git config --replace --global mergetool.winmerge.cmd "\"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"" git config --global mergetool.prompt false