找到进行git提交的第一个分支

时间:2016-10-14 20:43:37

标签: git github version-control merge git-branch

如何找到提交提交的第一个分支?似乎能够做到这一点,但我不确定如何。

似乎这在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

1 个答案:

答案 0 :(得分:3)

答案很简单,你不能 分支只是一个粘贴在提交上的便条纸 您可以随时将贴子剥离并将其放置在其他地方或将其扔掉 所以你无法分辨出引入提交的第一个分支是哪个。

更正确,只要

  • 分支未删除
  • 您在系统上/在提交提交的存储库中
  • 并且提交不早于reflog超时(默认为90天)

你可以找到,因为那时你知道分支在提交时的位置.- / p>