分支和分支中存在的文件列表

时间:2013-01-04 10:41:40

标签: git

假设我们需要获取branchAbranchB中存在的文件列表。

简单的解决方案是为每个分支获取两个单独的文件列表,然后将它们与bash或其他内容相交:

# pseudocode
let α = git ls-tree -r --name-only branchA
let β = git ls-tree -r --name-only branchB
intersect α β

似乎ls-tree命令不是这里的排他性方法。有没有办法只通过git获得答案?

1 个答案:

答案 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都会查看文件的内容以及名称,看起来你只想要一个通用名称列表,无论内容是否相同。