如何比较本地和远程 git 文件?

How to compare local and remote git files?

我需要列出所有 tracked 提交的仅存在于本地的文件。假设我的本地回购是对远程回购的提交(在 github 或 gitlab 上),这些是我本地 tracked 提交的文件:

a.txt
b.txt

现在假设在我的远程仓库中只有其中一个文件:

a.txt

什么 git 命令可用于根据 tracked 提交的文件列出本地和远程仓库之间的差异?明确地说,哪个 git 命令(git-ls-files、gt-ls-remote、git-ls-tree 等)可以生成以下输出:

b.txt

编辑 1:我必须在不从远程仓库中提取提交的情况下执行此操作。

编辑 2:我需要这个来写一个 git 钩子来防止推送,但我不确定这是 [=34 的一个很好的用例=] 钩子。

diff -y <(git ls-files) <(git ls-tree -r master --name-only )

我正在参加 diff of the files in master to local (ls-files).1

我想我已经弄明白了:

git fetch origin && comm -2 -3 \
  <(sort <(git ls-tree -r master --name-only)) \
  <(sort <(git ls-tree -r origin/master --name-only))

最终结果:

b.txt

谢谢 torekpolareper。你的建议很有帮助。