Git后合并钩子,如何获取合并分支的名称

时间:2011-08-31 19:24:59

标签: git githooks

我正在尝试创建合并后的钩子脚本,该脚本仅在从特定分支合并时运行。如何确定特定提交的分支更改名称?

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

3 个答案:

答案 0 :(得分:2)

首先,值得注意的是,您可能正在将任何提交合并到当前提交中 - 实际上它不必在任何分支上。

创建合并时,我认为第一个父(HEAD^1)始终是合并时所在的分支。因此,您可以在章鱼合并的情况下查看HEAD^2(可能HEAD^3HEAD^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等等。