Git:1.列出一个分支中的所有文件,2.比较来自不同分支的文件


88
  1. 寻找类似ls -R或的命令dir/s,可以列出提交/分支中的所有文件。
  2. 是否有任何命令可以比较来自不同分支的两个文件?

Answers:


136
  1. git ls-tree -r --name-only <commit>(其中,代替<commit>可以存在<branch>)。
    您可能还需要使用-t选项,在进入子目录之前先列出子目录
  2. git diff <branchA>:<fileA> <branchB>:<fileB>
    或者如果您想比较同一文件git diff <branchA> <branchB> -- <file>

4
如果要列出特定目录,则可以添加冒号,然后添加分支的路径,即:git ls-tree -r
miller the gorilla

25

要比较来自不同分支的同一文件:

git diff branch_1..branch_2 file.txt

列出树对象中的所有文件:

git ls-tree -r branch

我得到“ git:'ls'不是git命令。请参阅'git --help'。” 我正在使用git v 2.19.0。
安德鲁·S

1
这不只是ls,您-tree最终忘记了这一点:)
Dan Loewenherz

我以为是ls -tree。我以为-tree是一个开关。谢谢。
安德鲁·S

24

列出新分支中添加的所有文件

git diff --name-only branch1 master

4
这仅列出所有已更改文件的名称,而不仅仅是新文件。
Meredith

2

自Git v2.1.0起[08/15/14]

为了列出,您可以使用git ls-files递归方式列出当前索引/工作目录中的所有文件。您可以参考Git-SCM Docs / git-ls-files或输入man git-ls-files是否已安装Git并有可用的手册页。

它有很好的选项就像不同的方式来显示文件cachedstageddeletedmodifiedignoredothers为未跟踪。它还支持匹配模式。也有--debug阿根廷,你可以很容易地列出creation timemodification timeinode idowner & group idsizeflags的文件。


对于两个分支的差异,只需使用git diff <branch> <other branch>其他答案中所述。


2

列出分支中的文件 git ls-files

  1. 尝试git ls-filesgit-scm文档中描述
# Switch to <branch> of interest
$ git checkout <branch>
# List all files in <branch>
$ git ls-files

有关其他选项,请查阅文档

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.