Git:在分支之间仅显示额外/删除的文件

Git:在分支之间仅显示额外/删除的文件,git,branch,Git,Branch,假设我有两个分支branch1和branch2。我想查看一个分支中存在的、另一个分支中不存在的那些文件的列表 我知道我能做到: git diff --stat --color branch1 branch2 查看所有文件及其差异。此命令与我想要的非常接近,因为它将branch1中不存在的文件显示为: folder/file1.py | 66 ++++++++ folder/file2.py | 32 ----- 而branch2中不

假设我有两个分支
branch1
branch2
。我想查看一个分支中存在的、另一个分支中不存在的那些文件的列表

我知道我能做到:

 git diff --stat --color branch1 branch2
查看所有文件及其差异。此命令与我想要的非常接近,因为它将
branch1
中不存在的文件显示为:

folder/file1.py              |  66 ++++++++
folder/file2.py              |  32 -----
branch2
中不存在的则为:

folder/file1.py              |  66 ++++++++
folder/file2.py              |  32 -----
但是这个命令还显示了在分支之间更改的所有其他文件的差异,我想过滤这些差异。当许多文件在分支之间发生更改时,这是不方便的


如何在分支之间仅查看那些额外/删除的文件?基本上,我需要看到一个列表,该列表允许我快速地说“这些文件存在于
branch1
中,并从
branch2
或viceversa中删除”。

您可能可以使用
git diff--raw
,但我不确定重命名后这些文件是否有效:

git diff branch1 branch2 --raw | cut -f 5- -d ' ' | grep "^[AD]"
它的作用如下:

  • git diff branch1 branch2--raw
    基本上发出一个机器可解析版本的
    git status
    。例如:

    :: git diff 139a34^ 139a34 --raw
    :100644 100644 313c68b... 9852990... M  plugin/togglecursor.vim
    
    第5列有一个状态标志,表示文件是被修改(M)、删除(D)还是添加(a)。还有其他的。以下是中的
    git help diff
    片段:

  • cut-f5--d'
    表示去掉前4列数据。因此,我们只保留状态标志及其后的路径

  • 最后,
    grep“^[AD]”
    说只保留添加或删除文件的行


这似乎很有效。你能解释一下这个命令的作用吗?谢谢@加布里埃尔:我更新了我的答案,提供了更多关于正在发生的事情的信息。希望你觉得它有用!