如何比较本地和远程 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
谢谢 torek 和 polareper。你的建议很有帮助。
我需要列出所有 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
谢谢 torek 和 polareper。你的建议很有帮助。