【问题标题】:Differences between the staged and unstaged versions of the same file, using difftool [duplicate]使用 difftool [重复] 相同文件的暂存版本和未暂存版本之间的差异
【发布时间】:2017-05-05 20:32:10
【问题描述】:

有没有办法查看同一文件的stagedunstaged 版本之间的差异?

例如:

Changes to be committed:

    modified:   conf/application.conf

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   conf/application.conf

当我暂存更改然后再次修改文件而不暂存它时会发生这种情况。

EDIT

git status -vv 命令不够好,因为我需要使用diff / difftool 命令。那是因为实际上在太多文件中有太多更改,并且滚动浏览所有文件效率不高。但是diff/difftool允许我指定我感兴趣的文件。

【问题讨论】:

标签: git diff git-diff difftool git-stage


【解决方案1】:

git diff 将显示您的工作区和索引之间的差异。 (索引是暂存文件所在的位置)

这可能看起来并不明显,因为我们通常使用git diff 来查看工作区中的更改与签入的内容。但是,从技术上讲,git diff 显示的是工作区与索引,如果您没有对索引添加更改,则索引与您签出的内容相匹配。

  • 查看工作区与回购:git diff HEAD
  • 查看 index vs repos:git diff --cached(也可以使用 --staged)
  • 查看工作区与索引:git diff

【讨论】:

  • 非常感谢!这就是我一直在寻找的答案。
【解决方案2】:

如果您运行命令git status -vv,您将看到文件的文本更改。见doc

【讨论】:

  • 这不能回答我的问题。
  • 你能详细说明一下@DrKaoliN,也许我误解了。运行该命令将显示自上演以来对conf/application.conf 所做的所有更改。这与显示conf/application.conf 的升级版和升级版之间的区别不是一回事吗?
  • 嗯,那个特定的命令对我没有帮助,因为我需要使用diffdifftool 命令,以便我可以看到这些差异仅针对指定的文件 i> 即我可以输入git diff conf/application.conf,但输入git status -vv conf/application.conf,仍会在控制台中显示所有更改。因为在实践中我从不只修改一个文件,可能有几十个文件,修改了几十行代码,滚动半分钟找到我需要的东西效率不高。但技术上,你的答案确实是正确的。
  • 我明白了,有道理。感谢@DrKaoliN 的澄清。
猜你喜欢
  • 1970-01-01
  • 2022-10-23
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2021-06-05
  • 1970-01-01
  • 2019-08-11
相关资源
最近更新 更多