我找到了显示包含给定提交的所有分支的信息。但是,我如何在我的远程机器上找到新创建的,没有对它们进行提交的分支?如何列出所有不包含独特提交的git分支
回答
你可以看到,有没有承诺不会合并所有分支,通过运行git branch --merged
这应该完成你想要的。新创建的没有提交的分支实际上与已合并的旧分支没有区别。
这个问题的含义并不清楚。
这是一个简单的例子。假设我们画出这张图:
...--o--o--o--o <-- master
\
o--X <-- br1, br2
master
指向它的提示提交。分支br1
和br2
都指向他们自己的提交提交,但是这两个提交都是提交X
。从这个意义上讲,这些分支名称中至少有一个是多余的。现在
,你说:我的遥控器上
分支被新创建
很容易找到远程跟踪分支名称:他们在refs/remotes/
命名空间的人。名为origin
的远程设备位于refs/remotes/origin/
。
然而,“新创建”在Git中并没有意义。分支名称可以随时创建或销毁,指向任何提交。鉴于迄今为止绘制的图形,我们可以在X
之前添加指向提交的新br3
。如果我们这样做的origin
,然后运行git fetch
,我们得到:
...--o--o--o--o <-- master
\
o <-- origin/br3
\
X <-- br1, br2
这确实是相同提交图;我只是将X
下移到一个新的行,以便我有足够的空间来符合名称origin/br3
。
这名 - origin/br3
-is,从某种意义上说,多余的我们自己的br1
和br2
名字,因为它没有起到保留我们不会已经保留任何提交。但它的不同于我们有任何名字。
的git branch
选项--contains
,--merged
和--no-merged
(今git for-each-ref
可为好,因为Git的2.7.0)仅仅是EN-集体测试为“是或不是祖先”,对正是一些变化针对其他方面进行测试。让我们再回到这个图形,但加入了更多的名字:
...--U--V--Y--Z <-- master
\
W--X <-- br1, br2
图表告诉我们,U
是每一个其他标记提交的祖先,Y
是Z
的祖先,W
是X
的祖先,等等。W
是不的Y
祖先,然而,如提交节点只链接“向后” -leftwards,在这些图图中,所以W
追溯到V
,并Y
追溯到V
,但Y
根本不连接到W
所有。
对于这些“是祖先”的测试,提交总是被视为自己的祖先。 (也就是说,这些是小于或等于,≤测试,而不是严格小于)。
运行git branch --contains <id>
提交方式:对于每个分支名称,查找其提示提交。 (这是Z
,X
,然后再X
)。然后,看看是否提交<id>
是提示的祖先。如果是这样,打印分支名称。因此,如果我们提交U
,我们会得到所有分支名称,但如果我们提交X
,我们只能得到br1
和br2
。
运行git branch --merged [<commit>]
表示:对于每个分支名称,查找其提示提交。 (Z
,X
和X
)。然后,看看提示提交是否是我们刚刚提交的提交的祖先,或者如果我们没有提交提交,那么请参见HEAD
。如果是这样,请打印该分支名称。所以,如果我们现在正在参与提交X
,我们会看到br1
和br2
。但是,如果我们提交U
,我们得到没有分支名称,因为Z
和X
不是U
的祖先。
运行git branch --no-merged [<commit>]
表示:对于每个分支名称,查找其提示提交。然后,查看提示提交是否是我们刚刚提交的提交的祖先,或者是否为HEAD
。如果不是,则打印分支名称。
再次,这些都只是简单的“是祖先”的测试,而git branch
只是运行它们的所有分支名称。该--contains
,--merged
和--no-merged
控制:
- 其呈交哈希走在≤祖先测试的左右两侧;和
- “是”或“否”结果是否打印分支名称。
(有没有--does-not-contain
测试把参数哈希ID左侧,但只打印如果测试说“不”。对于这一点,你必须手工拼出循环。)
- 1. 列出所有不包含特定文件的提交
- 2. 如何合并仅包含在git分支中的提交
- 3. 在GIT的特定分支中查找所有提交
- 4. (git):如何从上游分支提交特定提交?
- 5. 分支的Git diff,不包括其他分支的提交
- 6. Git日志 - 如何列出所有不以特定单词开头的提交
- 7. 如何列出包含Git中所有更改文件的特定文件的提交?
- 8. 的Git分支没有表现出如提前起源提交
- 9. Git列出从特定计算机推送的所有提交
- 10. Git:在检出新分支之前没有提交分支
- 11. 如何列出在git2go(libgit2)中包含给定提交的分支?
- 12. 如何获取包含Git中所有分支和最新标签的列表?
- 13. 如何找到包含git的特定提交的TeamCity构建?
- 14. 没有提交的Git结帐分支
- 15. Git如何结帐分支提交
- 16. 如何将所有提交从特定提交移动到新分支
- 17. Git当前分支提交列表
- 18. Git:列出新分支推送期间的所有提交以及分支创建的起始地址
- 19. Git + Gerrit跨分支提交?
- 20. Git远程分支提交
- 21. 如何拆分包含重构的Git提交?
- 22. git创建具有特定提交的分支
- 23. Git,编辑所有分支的根提交
- 24. Git所有分支上每位作者的提交次数
- 25. 列出给定文件的所有提交(跨越所有分支)
- 26. 如何列出特定分支中的所有更改文件?
- 27. zsh - 显示git分支是否有提交过的提交
- 28. Git:提交“主”分支出现在其他分支
- 29. 将代码提交到特定分支_after_编写所有代码(git)?
- 30. 如何删除没有指定分支的git提交?
*使用--merged时,只会将分支合并到指定的提交中(即,其提交提交可从指定提交中获得的分支)将被列出。* – RomanPerekhrest
是的,该命令是我的出发点。然而,在我们的工作流程中,我们有一个没有任何反对的分支是非常常见的(所有功能分支都是如此开始的)。我想将这些分支与已合并回分支的分支分开。 –