如何仅列出两个分支之间已更改的文件名

How to list only file names that have changed between two branches

我的存储库中有两个分支,我想对某些文件进行比较。

我只想列出这两个分支之间新添加的迁移。

类似于:

git diff branch1 branch2 | grep /db/migrate

我该怎么做?

此命令将比较它们的整个历史记录:

git diff branch1..branch2 --name-only

如果你想从他们最后的共同祖先开始比较,那么:

git diff branch1...branch2 --name-only

现在您可以搜索所需的文件。从那里可以很容易地编写一个 shell 脚本来区分两个分支,逐个文件。

 filenames=$(git diff branch1...branch2 --name-only | grep /db/migratons)
 IFS=' '
 read -r -a filearr <<< "$filenames"
 for filename in "${filearr[@]}"
 do
      echo $(git diff branch1...branch2 -- "$filename")
 done

创建 git-command-name 文件并将其放入 user/bin 文件夹(您应该参数化输入 - 分支作为变量)。

Git 会将其识别为您可以调用的命令:

git command-name branch1 branch2