【问题标题】:Show both staged & working tree in git diff?在 git diff 中同时显示暂存树和工作树?
【发布时间】:2012-10-24 20:46:24
【问题描述】:

如果我运行 git diff 我会看到我的工作树中的更改,如果我运行 git diff --staged(或者 --cached)然后我会看到暂存的更改(w/git add)但是是否有与git diff 一起查看所有内容?

【问题讨论】:

标签: git diff


【解决方案1】:

如果您是指工作树和 HEAD 提交之间的更改(即同时进行分阶段和非分阶段更改),只需这样做:

git diff HEAD

【讨论】:

  • 不,OP 想要“一口气看到所有人”。
  • @user946850:git diff HEAD 在一次 git diff 调用中显示所有更改(已暂存和未暂存)。
  • 在二读时,也许你是对的。请注意,此处已对此进行了介绍:stackoverflow.com/a/1587952/946850
  • 但标题暗示不一样......让我们听听OP怎么说。
  • @user946850:这不是重复的,因为它专门要求分阶段更改[仅]。我确定某处有重复。
【解决方案2】:

有没有办法使用 git diff 一次性查看所有内容?

有,使用 Git 2.4.0+(2015 年 4 月)。

Michael J Gruber mjg 看到commit 4055500

commit/status:用-v -v(或-vv)显示index-worktree diff

git commitgit status 以长格式显示 HEAD 之间的差异 以及给定-v时的索引。这允许预览提交。

他们还列出了具有未暂存更改但没有差异的跟踪文件。

引入'-v -v'(或-vv),它显示了索引和索引之间的差异 工作树除了HEAD 索引差异。这允许审查提交中可能缺少的未暂存更改。

对于“-v -v”(或-vv),附加标题行

Changes to be committed:

Changes not staged for commit:

插入到 diff 之前,与 status 部分中的相同;后者前面加上 50*- 以使其更加突出。

在 OP 的情况下,一个简单的 git status -v -v(或 git status -vv)将同时显示暂存的 未暂存的差异。

【讨论】:

  • 如果对任何人都不是很明显,您还可以组合标志:git status -vv
【解决方案3】:

diffuse 视觉差异工具可以做到这一点:如果部分但不是全部更改已上演,它将显示三个窗格。在发生冲突的情况下,甚至会有四个窗格。

调用它

diffuse -m

在您的 Git 工作副本中。

如果你问我,十年来我见过的最好的视觉效果。

【讨论】:

  • 很棒的提示,非常感谢,但由于我要求使用 git 命令来执行此操作,因此不完全是答案。将另一个标记为答案...
猜你喜欢
  • 1970-01-01
  • 2013-04-01
  • 2022-10-24
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多