找出在prepare-commit-msg鉤子中合併的提交

找出在prepare-commit-msg鉤子中合併的提交

我嘗試創建一個prepare-commit-msg適用於合併提交的掛鉤。該腳本傳遞以下參數.git/MERGE_MSG, merge

我需要獲取合併提交的哈希或分支名稱(對於正常的非章魚合併)。我知道我可以git rev-parse MERGE_HEAD獲取哈希值或name-rev --name-only MERGE_HEAD獲取分支名稱(如果有)。

但是,似乎是prepare-commit-msg在創建 MERGE_HEAD 之前調用的。除了解析自動產生的訊息之外,還有其他方法可以知道合併了哪個提交嗎?

我正在使用 git 2.4.0。

答案1

在自訂合併驅動程式中,可以從環境變數中擷取要合併到(目標)的分支的名稱,git symbolic-ref HEAD 以及要合併到(來源)的分支的名稱 GITHEAD_<SHA>

這是一個範例腳本片段:

# retrieve merged branch name from an env var GITHEAD_<sha>=<branchName> 
# we cannot use a sym ref of MERGE_HEAD, as it doesn't yet exist 
gitHead=$(env | grep GITHEAD) # e.g. GITHEAD_<sha>=release/1.43 
# cut out everything up to the last "=" sign 
source="${gitHead##*=}"

# retrieve base branch name from a sym ref of HEAD 
branch=$(git symbolic-ref HEAD) # e.g. refs/heads/master 
# cut out "refs/heads"
destination="${branch#refs/heads/}"

echo "Merging from $source into $destination"

來源 :如何在自訂 Git 合併驅動程式中檢索分支名稱?

相關內容