2

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

a.txt
b.txt

现在想象在我的远程仓库中只有这些文件之一:

a.txt

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

b.txt

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

编辑 2:我需要这个来编写一个 git hook 来防止推送,但我不确定这是 git hooks 的一个很好的用例。

4

2 回答 2

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。你的建议很有帮助。

于 2020-03-15T14:07:49.080 回答
1

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

我正在将 master 中的文件的差异带到本地(ls-files)。1

于 2020-03-14T12:29:01.043 回答