如何区分本地未提交的更改和原点

Cha*_*nya 133 git git-diff

假设我克隆了一个存储库并开始修改文件.我知道如果我有本地未提交的更改,我可以按如下方式进行差异,git diff test.txt它将显示当前本地HEAD与文件中已修改的未提交更改之间的区别.如果我提交这些更改,我可以通过使用将其与原始存储库区分开来git diff master origin/master

但有没有办法在本地提交之前将服务器上的原始存储库区分本地更改?我尝试了各种git diff --cached master origin/master没有运气的排列.

JJD*_*JJD 126

鉴于远程存储库已通过git fetch它进行缓存,应该可以与这些提交进行比较.请尝试以下方法:

$ git fetch origin
$ git diff origin/master
Run Code Online (Sandbox Code Playgroud)

  • 啊,非常好.关键是要让主人离开.我曾尝试过一个组合,我之前正在进行一次获取,但是当我做了`git diff master origin/master`时,它仍然在与已提交的版本进行比较(回想起来很明显).但是遗漏主人现在将本地更改与获取的版本进行比较. (4认同)

Nat*_*ate 38

我知道这不是一个答案,问确切的问题,但我发现这个问题,寻找差异比较到一个文件中的一个分支和本地未提交的文件,我想我会分享

句法:

git diff <commit-ish>:./ -- <path>
Run Code Online (Sandbox Code Playgroud)

例子:

git diff origin/master:./ -- README.md
git diff HEAD^:./ -- README.md
git diff stash@{0}:./ -- README.md
git diff 1A2B3C4D:./ -- README.md
Run Code Online (Sandbox Code Playgroud)

(感谢Eric Boehs提供了一种无需输入文件名两次的方法)

  • 另外一个很好的补充是`git diff master:./ - README.md`.这样你就不必两次输入`README.md`了,你可以更容易地将它添加到别名中. (3认同)
  • 该语法对我不起作用......而是`git diff master:--README.md``./`创建了一个`/dev/null`源而不是远程分支。使用 git 版本 2.19.0 (2认同)

小智 20

查看现有文件的非暂存(未添加)更改

git diff

请注意,这不会跟踪新文件.查看暂定的,未提交的更改

git diff --cached


Can*_*ner 8

如果要直观地比较文件,可以使用:

git difftool
Run Code Online (Sandbox Code Playgroud)

它会自动为每个更改的文件启动diff应用程序.

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
Run Code Online (Sandbox Code Playgroud)