假设我们需要获取branchA
和中存在的文件列表branchB
。
简单的解决方案是为每个分支获取两个单独的文件列表,然后将它们与bash
或其他东西相交:
# pseudocode
let α = git ls-tree -r --name-only branchA
let β = git ls-tree -r --name-only branchB
intersect α β
似乎ls-tree
命令在这里不是排他的方法。有没有办法只通过 git 得到答案?
假设我们需要获取branchA
和中存在的文件列表branchB
。
简单的解决方案是为每个分支获取两个单独的文件列表,然后将它们与bash
或其他东西相交:
# pseudocode
let α = git ls-tree -r --name-only branchA
let β = git ls-tree -r --name-only branchB
intersect α β
似乎ls-tree
命令在这里不是排他的方法。有没有办法只通过 git 得到答案?
也许是这样的(假设是一个bash
外壳):
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
都会查看文件的内容以及名称,而且看起来你只想要一个通用名称列表,无论是否内容相同与否..