如何在GIT中列出特定分支上的已修改文件

时间:2015-03-16 07:14:28

标签: git

我遇到了一个棘手的问题。 例如,我正在研究" 功能"分支,经过多次提交和合并后,代码传递给" ",图表如下:

   ---A---B---C---D---I  master
       \   \     /   /
        E---F---G---H  feature

我想知道的是"功能"分支。

我找到了这个命令:git log --name-only --pretty=format:'' origin_branch..new_branch 它似乎可以给我结果,但关键是我必须指定一个合适的范围。

但是在我学习手册之后,我不知道如何给出正确的范围。

我想得到的是:

        E--- ---G---H  feature

根据gitrevisions(git help gitrevisions):

master..feature =>无

master ... feature =>

   ---.---.---C---D---I  master
       \   \     /   /
        .---.---.---.  feature

功能^ @ =>

   ---A---B---.---.---.
       \   \     /   /
        E---F---G---.  feature

你可以看到没有一个符合我的要求。

真的,谢谢你,如果你可以帮助我。

1 个答案:

答案 0 :(得分:1)

在我看来,最简单的方法是找到feature偏离master的提交(在你的情况下A)。在此之后,您可以告诉git向您显示feature上的所有提交,不包括合并以及"原始"之后的任何提交。提交。

要查找源自我们的提交feature,我们可以使用此命令链;可能有一种更简单的方法,但我不知道一个:

git rev-list master --first-parent | grep "$(git rev-list feature --first-parent)" | head -1

这个效果实际上列出了所有#34;仅#34;仅在{em>第一个父之后(忽略合并的提交)并将它们与master上的提交进行比较,在feature上。我们使用在两者上发生的第一次提交,即提交feature的提交。

然后我们使用此提交列出feature上的所有提交,忽略合并提交以及"始发"之后的任何提交。提交。

git log feature --name-only --no-merges --first-parent --not $(git rev-list master --first-parent | grep "$(git rev-list feature --first-parent)" | head -1)

如果您想更频繁地使用此命令,我建议您创建一个别名。