首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示提交的原始分支

显示提交的原始分支
EN

Stack Overflow用户
提问于 2010-12-27 04:18:11
回答 9查看 22.3K关注 0票数 43

我已经使用git-blame来查找特定的提交。现在,我想要找到它最初所在的分支。(从那里,我将使用分支机构名称来查找特定的票据)

让我们将“原始分支”定义为“在分支合并到任何其他分支之前提交到的分支”。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-12-27 07:34:17

就像其他人所说的,如果你正在寻找的分支不是你指责这个提交的存储库的本地分支(例如,只在远程开发人员的个人存储库中的分支),那么你就完蛋了。

但是假设您可以看到所需的分支,并且您当然有提交的散列,例如d590f2...,部分答案是您可以这样做:

代码语言:javascript
复制
$ git branch --contains d590f2
  tests
* master

然后,为了确认你找到了罪魁祸首:

代码语言:javascript
复制
$ git rev-list tests | grep d590f2

当然,如果d590f2被合并到多个分支中,您将不得不更加小心。

票数 44
EN

Stack Overflow用户

发布于 2010-12-27 04:29:12

这在git中是不适用的。分支是每个存储库的本地概念:一个人的“本地内容”分支可以与另一个人的“本地内容”分支完全分开。如果您执行类似于查看主集成分支和查询提交,并删除这两者之间的所有合并基础之类的操作,您应该能够获得提交历史的子树,这可能会带来一些启发……也可能不是。例如,如果你跟踪从查询提交到"master“的链接,你应该有希望找到合并提交,其中包含有用的注释,说明合并来自哪里……但这些信息只是信息性的,并不是以某种旨在自动检索的方式记录的。

例如gitk some-commit...master (几乎是gitk some-commit master --not $(git merge-base some-commit master)的缩写)

票数 11
EN

Stack Overflow用户

发布于 2010-12-27 04:36:05

Git分支无非是一个“指向提交的命名指针”(这是与其他著名的VCS中根本不同的概念)。

这种情况很明显,提交A在branch-1上,提交B在branch-2

代码语言:javascript
复制
  o A [branch-1]
  |
o | B [branch-2]
| |

合并后,不清楚A(或B)最初是在branch-1上还是在branch-2

代码语言:javascript
复制
o [branch-1] [branch-2]
|
o merged 
|\
| o A
| |
o | B
| |

如果你已经标记了A的父提交,例如release-1,并且你知道这个标记只为branch-1中的提交提供,也许你可以猜测提交A是哪个Git分支。

代码语言:javascript
复制
o [branch-1] [branch-2]
|
o merged 
|\
| o A
| |
o | B
| |
| o <release-1]
| |
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4535251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档