从检出后挂钩中检索分支名称

ojh*_*ojh 3 git githooks git-branch

在Git中从一个分支切换到另一个分支时,是否有任何方法可以从检出后挂钩中检索两个分支的名称?

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

$ git branch
* branch_a
  branch_b
  master

$ git checkout branch_b
Switched to branch 'branch_b'
Run Code Online (Sandbox Code Playgroud)

我正在寻找以下两个字符串(在check-out挂钩中):

"branch_a"
"branch_b"
Run Code Online (Sandbox Code Playgroud)

meg*_*joe 6

这是基于 @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"
Run Code Online (Sandbox Code Playgroud)


GHu*_*ugo 5

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

#!/bin/bash

# $6 = previous branch, $8 is next branch
git reflog | awk 'NR==1{ print $6 " -> " $8; exit }'
Run Code Online (Sandbox Code Playgroud)

编辑:更新的答案。在这里以前:

该挂钩具有三个参数:

  • 前一个HEAD的参考
  • 新HEAD的参考
  • 如果是分支签出,则为1;如果是文件签出,则为0。

有了这两个第一,您应该有足够的信息来了解您要做什么。

  • 关于您的编辑:遗憾的是,结帐后挂钩的参数 1 和 2 是 SHA,而不是符号引用(例如 `refs/heads/master`);因此,您不能真正使用它们来明确确定新旧分支。 (2认同)