如何找出 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 --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
的父代(如本例),将使用共同祖先来回答此问题。
我有一个名为 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 --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
的父代(如本例),将使用共同祖先来回答此问题。