2017-06-26 70 views
0

我正在研究腳本來查找和刪除GitHub存儲庫列表上的合併分支。但git branch -r --merged origin/master命令不會返回合併分支,因爲它應該。git分支 - 錯誤的輸出

這裏是我的腳本:

#!/usr/bin/env bash 
TARGET="/tmp/myorg" 
rm -fR ${TARGET} 
mkdir -p ${TARGET} 

declare -A repos 
repos["experiment"]="[email protected]:myorganisation/experiments.git" 

for LAYER in "${!repos[@]}" 
do 
    git clone ${repos[$LAYER]} "$TARGET/$LAYER" > /dev/null 
    cd "$TARGET/$LAYER" 

    MERGED_BRANCHES=$(git branch -r --merged origin/master) 

    for BRANCH in ${MERGED_BRANCHES[@]} 
    do 
     echo "$(date): Deleting ${BRANCH} from ${LAYER}" 
     git push --delete origin ${BRANCH} 
    done 
done 

爲了測試這個腳本,我創建了GitHub上一個測試版本庫和添加2個分支。我合併了其中一個,並且在公開拉取請求中留下了另一個。我期待看到該命令的輸出合併後的分支,而是我只是得到:

$ git branch -r --merged origin/master 
origin/HEAD -> origin/master 
origin/master 

系統: 的Ubuntu 16.04.2 LTS Git版本2.7.4

回答

0

回答我的問題。

Git IRC社區對此案非常有幫助。下面是對話的一部分:

[15:55]阿燕:是啊,看樣子他們用的是「合併」是指 一些東西的意思混帳有點不同的,當它使用 字

[15:56] Ayan:如果您在github, 上訪問您的回購設置,您會發現配置允許使用「合併」按鈕 的操作部分。在你的情況下,它確實「南瓜合併」(這 結果在同一文件中的內容作爲一個正常的合併,但不能 Git中確定爲合併以後)

[15:58]壁球和變基合併通常不被 檢測--merged

[15:59]是啊,--merged H的 「顯示我的分支標籤,其 提交地爲H拓撲祖先」

[15:59]基礎重建斷裂那關係,壓扁 打破那種關係

顯然,這是GitHub的責任,如果你使用壓扁或rebase合併,這是不可能使用這個腳本。

+0

這就是爲什麼我說* squash「merge」不是合併*將merge-as-a-verb看作與「合併」,merge-as-a-noun 。壓扁操作完成動詞部分,但完全省略了名詞部分。 – torek