git如何找到分支源自的提交哈希

bry*_*mcd 51 git git-branch

假装我从我的主分支分支到主题分支,然后我在我的主题分支上做了一些提交.是否有一个命令告诉我主分支上的提交哈希来自我的主题分支?

理想情况下,我不必知道我做了多少次提交(试图避免使用HEAD ^ 5).

我用谷歌搜索过,似乎无法找到答案.谢谢!

max*_*max 65

你可以用git reflog show --no-abbrev <branch name>.它将输出对分支所做的所有更改,包括它的创建,例如(我xxxmaster分支创建了分支):

bdbf21b087de5aa2e78a7d793e035d8bd9ec9629 xxx@{0}: branch: Created from master
Run Code Online (Sandbox Code Playgroud)

请注意,这不是很可靠,因为reflog记录可能会过期(默认情况下为90天),并且似乎没有100%可靠的方法来执行此操作.

  • `reflog`和`merge-base`输出在中间合并之前首先提交.我在我的分支中有10-15个中间合并,我找不到一个可靠的方法如何在这个分支中获得第一个提交. (3认同)

kni*_*ttl 47

用于git merge-base master your-branch找到两个分支(通常是分支点)之间的最佳共同祖先.

  • @Bryce:请注意,如果你做一些中间合并,这将给你最近的共同祖先,不一定是第一个分支点. (30认同)
  • @DavidSopko:不确定你是什么意思?`git rev-parse --short $(git merge-base master my_branch)`工作吗? (2认同)

小智 6

唯一 100% 可靠的方法是在创建分支时标记分支的开头。如果您将提交合并回您创建新分支的分支,则接受的答案将不起作用。例如,如果您正在创建一个稳定的发布分支并希望将您在发布测试期间找到的修复程序合并回主版本,有时会这样做。很常见的事情。如果您知道永远不会将来自新分支的提交合并回原始分支,那么接受的答案将起作用。