如何找出 git 分支中更改了哪些文件(不是两个分支之间的区别)

How to find out what files were changed in a git branch (not the difference between two branches)

我有一个名为 feature_219 的分支,它是不久前从 master 创建的。自转移以来,两个分支上都有一些文件发生了变化。

现在我试图弄清楚在 feature_219 分支上工作时更改了哪些文件。

经过一些研究后,我发现 git diff --name-only master feature_219 可能会有所帮助,但事实证明,此命令会告知两个分支中所有不同的文件。我试图用这个命令寻找一些选项,但对我没有任何帮助。

有没有办法只列出在 feature_219 分支中更改的那些文件?

您可以使用 git merge-base 找到两个分支的共同祖先,然后得到差异。

git diff --name-only feature_219 $(git merge-base master feature_219)

根据 git diff documentation

git diff --name-only master...feature_219

应该可以解决问题。注意三个点。 如果您目前在分支 feature_219

git diff --name-only master...

足够了。两个分支的顺序非常重要。在第一次调用中交换两个分支将为您提供自启动 feature_219 分支以来 master 分支中的所有更改。

命令 git diff A...B 应解释为 "give me all changes which happen in the commits when going from A to B"。如果 A 不是 B 的父代(如本例),将使用共同祖先来回答此问题。