假设我们需要获取branchA
和branchB
中存在的文件列表。
简单的解决方案是为每个分支获取两个单独的文件列表,然后将它们与bash
或其他内容相交:
# pseudocode
let α = git ls-tree -r --name-only branchA
let β = git ls-tree -r --name-only branchB
intersect α β
似乎ls-tree
命令不是这里的排他性方法。有没有办法只通过git获得答案?
答案 0 :(得分:0)
也许是这样的(假设bash
shell):
comm -12 <(git ls-tree -r --name-only branchA | sort) <(git ls-tree -r --name-only branchB | sort)
如果您没有bash
,或者您的bash
恰好不足以支持这种形式的流程替代,您可以将输出保存到临时文件中:
git ls-tree -r --name-only branchA | sort > /tmp/file1
git ls-tree -r --name-only branchB | sort > /tmp/file2
comm -12 /tmp/file1 /tmp/file2
rm /tmp/file1 /tmp/file2
我认为您不能单独使用git
获得所需内容,因为任何形式的git diff
都会查看文件的内容以及名称,看起来你只想要一个通用名称列表,无论内容是否相同。