我正在處理我的git服務器的後期接收,以便它自動上傳我的網站的最新版本在提交所在的分支後命名的文件夾中,但是以某種方式執行此代碼不能按預期工作。無法在bash中獲得正確的git分支名稱
不知何故,我的值分支獲取所有分支的值,而不是我試圖獲取的分支。散列確實得到正確的散列碼。我已經在程序之外測試了它,當我輸入正確的哈希時,分支也是如此。我在這個程序中使用了錯誤的語法嗎?
#!/bin/sh
hash=$(git log -n 1 --pretty=format:"%h")
branch=$(git branch --contains $(git log -n 1 --pretty=format:"%H"))
if [ branch ]
then
GIT_WORK_TREE="/data/site/'$branch'"
echo "/data/site/'$branch'"
git checkout -f $branch
fi
你看錯了方向:一般來說,沒有唯一的分支提交明確屬於。看到我的這個答案:http://stackoverflow.com/questions/29257491/which-branch-do-commits-from-a-deleted-branch-belong-to/29258814#29258814 – Jubobs 2015-04-01 13:46:35
由於Jubobs說一個提交沒有有「** a **分支」。一些分支上存在提交(以達到它爲準)。 – 2015-04-01 13:53:31
爲什麼你在做所有這些工作,當git post-receive hook在stdin上獲取_oldrev newrev refname_ triplets?如果有多個名稱,您仍然需要選擇所需的那些名稱,但它應該是一個開始。 – Useless 2015-04-01 13:54:18