And*_*ott 1029 git version-control
如何查询git以找出哪些分支包含给定的提交?gitk通常会列出分支,除非有太多分支,在这种情况下它只是说"很多(38)"或类似的东西.我需要知道完整列表,或者至少是否某些分支包含提交.
Von*_*onC 1402
git branch --contains <commit>
Run Code Online (Sandbox Code Playgroud)
仅列出包含指定提交的分支(如果未指定,则为HEAD).意味着
--list.
git branch -r --contains <commit>
Run Code Online (Sandbox Code Playgroud)
列出远程跟踪分支(如下面的user3941992的回答中所述),即"与远程分支有直接关系的本地分支".
另见git ready文章.
该
--contains标签将计算出,如果某个提交已带来了又到您的分支.也许你已经从你认为已经应用的补丁中获得了一个提交SHA,或者你只是想检查你最喜欢的开源项目的提交是否已经减少了75%的内存使用量.
$ git log -1 tests
commit d590f2ac0635ec0053c4a7377bd929943d475297
Author: Nick Quaranto <nick@quaran.to>
Date: Wed Apr 1 20:38:59 2009 -0400
Green all around, finally.
$ git branch --contains d590f2
tests
* master
Run Code Online (Sandbox Code Playgroud)
注意:如果提交位于远程跟踪分支上,请添加该-a选项.
(正如MichielB 在下面评论)
git branch -a --contains <commit>
Run Code Online (Sandbox Code Playgroud)
MatrixFrog注释它只显示哪些分支包含那个确切的提交.
如果你想知道哪些分支包含"等效"提交(即哪些分支已经选择了提交),那就是git cherry:
因为
git cherry比较变更集而不是提交标识(sha1),您可以git cherry用来确定您在本地进行的提交是否已<upstream>在不同的提交ID下应用.
例如,如果您<upstream>通过电子邮件提供补丁而不是直接推送或提取提交,则会发生这种情况.
__*__*__*__*__> <upstream>
/
fork-point
\__+__+__-__+__+__-__+__> <head>
Run Code Online (Sandbox Code Playgroud)
(这里,标记' -' 的提交不会显示git cherry,意味着它们已经存在<upstream>.)
Eug*_*kov 20
你可以运行:
git log <SHA1>..HEAD --ancestry-path --merges
Run Code Online (Sandbox Code Playgroud)
从输出中的最后一次提交的注释,您可以找到原始分支名称
例:
c---e---g--- feature
/ \
-a---b---d---f---h---j--- master
git log e..master --ancestry-path --merges
commit h
Merge: g f
Author: Eugen Konkov <>
Date: Sat Oct 1 00:54:18 2016 +0300
Merge branch 'feature' into master
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
284729 次 |
| 最近记录: |