查找进行 git 提交的第一个分支
Find first branch on which a git commit was made
如何找到第一个提交的分支?似乎可以做到这一点,但我不确定怎么做。
这似乎在 git 中是不可能的,因为它的设计将提交而不是分支放在更改跟踪的中心。
我可以使用以下显示 1st 分支 + 任何合并但不能将焦点缩小到仅 1st 提交分支。
git branch --contains --merge <sha1>
returns 合并提交的所有分支的列表以及合并的第一个分支。 --no-merged returns 所有包含提交的后续分支,因为它们在合并点之后分支。
因此,您可以获得每个合并的列表,但不是创建它的第一个分支,并且在命令执行之前删除的任何分支都将丢失(或者您正在查看 reflogs)
结果
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
git push --set-upstream origin
}
# 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
答案很简单。
一个分支只是一个 post-it 贴在提交上的注释。
您可以随时撕下 post-it 并将其放在其他地方或扔掉。
所以你无法分辨哪个是提交被引入的第一个分支。
更准确的说,只要
- 分支没有被删除并且
- 您在进行提交的系统/存储库中
- 并且提交不早于 reflog 超时(默认为 90 天)
你可以找到,因为那样你就知道分支在哪里 post - 它在提交时的位置。
如何找到第一个提交的分支?似乎可以做到这一点,但我不确定怎么做。
这似乎在 git 中是不可能的,因为它的设计将提交而不是分支放在更改跟踪的中心。
我可以使用以下显示 1st 分支 + 任何合并但不能将焦点缩小到仅 1st 提交分支。
git branch --contains --merge <sha1>
returns 合并提交的所有分支的列表以及合并的第一个分支。 --no-merged returns 所有包含提交的后续分支,因为它们在合并点之后分支。
因此,您可以获得每个合并的列表,但不是创建它的第一个分支,并且在命令执行之前删除的任何分支都将丢失(或者您正在查看 reflogs)
结果
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
git push --set-upstream origin
}
# 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
答案很简单。
一个分支只是一个 post-it 贴在提交上的注释。
您可以随时撕下 post-it 并将其放在其他地方或扔掉。
所以你无法分辨哪个是提交被引入的第一个分支。
更准确的说,只要
- 分支没有被删除并且
- 您在进行提交的系统/存储库中
- 并且提交不早于 reflog 超时(默认为 90 天)
你可以找到,因为那样你就知道分支在哪里 post - 它在提交时的位置。