假设我从master分支转移到了一个topic分支,然后我在topic分支上做了几次提交,有没有一个命令告诉我topic分支的master分支上的提交哈希值?理想情况下,我不需要知道自己提交了多少次(尽量避免HEAD^5)。我已经在谷歌上搜索了这么多,似乎不能找到答案。谢谢!
6ojccjat1#
你可以使用git reflog show --no-abbrev <branch name>,它会输出对分支所做的所有修改,包括分支的创建,例如(我从master分支创建了分支xxx):
git reflog show --no-abbrev <branch name>
master
xxx
bdbf21b087de5aa2e78a7d793e035d8bd9ec9629 xxx@{0}: branch: Created from master
请注意,这不是很可靠,因为reflog记录可能会过期(默认为90天),而且似乎没有100%可靠的方法来做到这一点。
pxiryf3j2#
使用git merge-base master your-branch查找两个分支之间的最佳公共祖先(通常是分支点)。
git merge-base master your-branch
wd2eg0qa3#
唯一100%可靠的方法是在创建分支时标记分支的开头。如果你将提交合并回创建新分支的分支,那么已接受的答案将不起作用。有时候,如果你正在创建一个稳定版本分支,并希望将在发布测试中找到的修复合并回master,就需要这样做。这是一件常见的事情。如果你知道你永远不会把新分支的提交合并回原始分支,那么接受的答案将起作用。
eufgjt7s4#
如果感兴趣的分支机构尚未合并,就像大家说的:
git merge-base branch1 branch2
topic
git merge-base topic master
sha-of-last-merge
git rev-list --parents -n 1 sha1-of-last-merge
sha-of-last-merge sha-of-parent-1 sha-of-parent-2
git merge-base sha-of-parent-1 sha-of-parent-2
jk9hmnmh5#
这将显示topic上的第一次提交:
git rev-list topic ^master | tail -n 1
这将显示分支开始的提交,即分叉点:
git rev-parse "$(git rev-list topic ^master | tail -n 1)^"
这也适用于创建topic分支后将master合并到topic的情况,假设topic从master开始。
git rev-list topic ^master
列出topic上无法从master访问的所有提交。
| tail -n 1
然后执行最后一个提交。
git rev-parse <rev>^
打印<rev>的第一个父级。
<rev>
5条答案
按热度按时间6ojccjat1#
你可以使用
git reflog show --no-abbrev <branch name>
,它会输出对分支所做的所有修改,包括分支的创建,例如(我从master
分支创建了分支xxx
):请注意,这不是很可靠,因为reflog记录可能会过期(默认为90天),而且似乎没有100%可靠的方法来做到这一点。
pxiryf3j2#
使用
git merge-base master your-branch
查找两个分支之间的最佳公共祖先(通常是分支点)。wd2eg0qa3#
唯一100%可靠的方法是在创建分支时标记分支的开头。如果你将提交合并回创建新分支的分支,那么已接受的答案将不起作用。有时候,如果你正在创建一个稳定版本分支,并希望将在发布测试中找到的修复合并回master,就需要这样做。这是一件常见的事情。如果你知道你永远不会把新分支的提交合并回原始分支,那么接受的答案将起作用。
eufgjt7s4#
如果感兴趣的分支机构尚未合并,就像大家说的:
git merge-base branch1 branch2
如果您已合并分支(例如,
topic
和master
,以任一方式合并):git merge-base topic master
sha-of-last-merge
git rev-list --parents -n 1 sha1-of-last-merge
sha-of-last-merge sha-of-parent-1 sha-of-parent-2
git merge-base sha-of-parent-1 sha-of-parent-2
master
上的一个提交开始你的topic
分支,而这个提交有几个父提交(合并提交),然后没有运气。需要启发式/常识/其他知识。jk9hmnmh5#
这将显示
topic
上的第一次提交:这将显示分支开始的提交,即分叉点:
这也适用于创建
topic
分支后将master
合并到topic
的情况,假设topic
从master
开始。列出
topic
上无法从master
访问的所有提交。然后执行最后一个提交。
打印
<rev>
的第一个父级。