如何找到提交提交的第一个分支?似乎能够做到这一点,但我不确定如何。
似乎这在git中是不可能的,因为它的设计使得提交不是分支在变更跟踪的中心。
我可以使用以下显示第一个分支+任何合并,但不能将焦点缩小到第一个提交分支。
git branch --contains --merge <sha1>
返回合并提交的所有分支的列表以及合并提交的第一个分支。 - no-merged 返回包含提交的所有后续分支,因为它们在合并点之后分支。
因此,您可以获取每个合并的列表,但不能获得它所在的第一个分支,并且在命令执行之前删除任何分支(或者您正在查看reflog)
结果
git branch --contains <sha1 for "added feature/inital 1">
* develop
feature/inital
feature/subsequent1
git branch --contains <sha1 for "added feature/inital 1"> --merged
* develop
feature/inital
git branch --contains <sha1 for "added feature/inital 1"> --no-merged
feature/inital
测试脚本
function mkbranch {
git checkout -b $1
git push --set-upstream origin $1
}
# Develop
mkbranch develop
for f in 1 2 3; do date > file${f}.txt; git add file${f}.txt; git commit -m "added develop $f"; done
git push
# Initial Feature Branch
mkbranch feature/inital
for f in 1 3; do date > file${f}.txt; git add file${f}.txt; git commit -m "modified feature/inital $f"; done
git push
# Merge
git checkout -b develop
git merge feature/inital
git push
# Next Feature Branch
mkbranch feature/subsequent1
for f in 1 3; do date > file${f}.txt; git add file${f}.txt; git commit -m "modified feature/subsequent1 $f"; done
git push
答案 0 :(得分:3)
答案很简单,你不能 分支只是一个粘贴在提交上的便条纸 您可以随时将贴子剥离并将其放置在其他地方或将其扔掉 所以你无法分辨出引入提交的第一个分支是哪个。
更正确,只要
你可以找到,因为那时你知道分支在提交时的位置.- / p>