我正在尝试创建合并后的钩子脚本,该脚本仅在从特定分支合并时运行。如何确定特定提交的分支更改名称?
e.g。
if $from_specific_branch == 1 then
git diff --name-status HEAD@{1} HEAD "some_folder" |
while read st file; do
#skip deleted
if [ "$st" == 'D' ]; then continue; fi
# .. do something with those files
end
答案 0 :(得分:2)
首先,值得注意的是,您可能正在将任何提交合并到当前提交中 - 实际上它不必在任何分支上。
创建合并时,我认为第一个父(HEAD^1
)始终是合并时所在的分支。因此,您可以在章鱼合并的情况下查看HEAD^2
(可能HEAD^3
,HEAD^4
并测试它们是否在特定分支上。
要测试分支HEAD^2
上是否foo
,您可以测试git merge-base HEAD^2 foo
是否与git rev-parse --verify HEAD^2
相同。
答案 1 :(得分:0)
您可以使用git branch --contains <commit>
列出所有分支;不确定是否完全符合您的要求,因为它会列出包含该提交的任何分支,但假设您正在合并一个新提交,它可能会成功...
答案 2 :(得分:0)
您可以在钩子中使用$ GIT_REFLOG_ACTION。它包含像merge some_branch_name这样的文本,或者拉源some_branch_name等等。