我已经使用git-blame来查找特定的提交。现在,我想要找到它最初所在的分支。(从那里,我将使用分支机构名称来查找特定的票据)
让我们将“原始分支”定义为“在分支合并到任何其他分支之前提交到的分支”。
发布于 2010-12-27 07:34:17
就像其他人所说的,如果你正在寻找的分支不是你指责这个提交的存储库的本地分支(例如,只在远程开发人员的个人存储库中的分支),那么你就完蛋了。
但是假设您可以看到所需的分支,并且您当然有提交的散列,例如d590f2...,部分答案是您可以这样做:
$ git branch --contains d590f2
tests
* master然后,为了确认你找到了罪魁祸首:
$ git rev-list tests | grep d590f2当然,如果d590f2被合并到多个分支中,您将不得不更加小心。
发布于 2010-12-27 04:29:12
这在git中是不适用的。分支是每个存储库的本地概念:一个人的“本地内容”分支可以与另一个人的“本地内容”分支完全分开。如果您执行类似于查看主集成分支和查询提交,并删除这两者之间的所有合并基础之类的操作,您应该能够获得提交历史的子树,这可能会带来一些启发……也可能不是。例如,如果你跟踪从查询提交到"master“的链接,你应该有希望找到合并提交,其中包含有用的注释,说明合并来自哪里……但这些信息只是信息性的,并不是以某种旨在自动检索的方式记录的。
例如gitk some-commit...master (几乎是gitk some-commit master --not $(git merge-base some-commit master)的缩写)
发布于 2010-12-27 04:36:05
Git分支无非是一个“指向提交的命名指针”(这是与其他著名的VCS中根本不同的概念)。
这种情况很明显,提交A在branch-1上,提交B在branch-2上
o A [branch-1]
|
o | B [branch-2]
| |合并后,不清楚A(或B)最初是在branch-1上还是在branch-2上
o [branch-1] [branch-2]
|
o merged
|\
| o A
| |
o | B
| |如果你已经标记了A的父提交,例如release-1,并且你知道这个标记只为branch-1中的提交提供,也许你可以猜测提交A是哪个Git分支。
o [branch-1] [branch-2]
|
o merged
|\
| o A
| |
o | B
| |
| o <release-1]
| |https://stackoverflow.com/questions/4535251
复制相似问题