从post-checkout钩子中检索分支名称

时间:2014-08-31 08:33:18

标签: git git-branch githooks

当在Git中从一个分支切换到另一个分支时,有没有办法从post-checkout钩子中检索两个分支的名称?

假设我要运行以下两个命令:

$ git branch
* branch_a
  branch_b
  master

$ git checkout branch_b
Switched to branch 'branch_b'

我正在寻找以下两个字符串(在结帐后的挂钩中):

"branch_a"
"branch_b"

2 个答案:

答案 0 :(得分:4)

您可以在钩子中使用git reflog来获取上一个和下一个分支。 这是一个简单的工作示例:

#!/bin/bash

# $6 = previous branch, $8 is next branch
git reflog | awk 'NR==1{ print $6 " -> " $8; exit }'

编辑:更新的答案。这里是前一个:

这个钩子有三个参数:

  • 前一个HEAD的参考
  • 新HEAD的参考
  • 1如果是分支结账,0表示文件结账。

有了这两个第一,你就应该掌握足够的信息来了解你的目标。

答案 1 :(得分:0)

这里是完整的例子,基于@GHugo 的回答

PREV_BRANCH=`git reflog | awk 'NR==1{ print $6; exit }'`
NEW_BRANCH=`git reflog | awk 'NR==1{ print $8; exit }'`
echo "PREV_BRANCH: $PREV_BRANCH"
echo "NEW_BRANCH: $NEW_BRANCH"