git-rebase의 반환 코드 1은 무엇입니까? 어떤 다른 값을 반환할 수 있나요?

git-rebase의 반환 코드 1은 무엇입니까? 어떤 다른 값을 반환할 수 있나요?

마스터의 변경 사항을 가져와 모든 분기에 적용하는 스크립트가 있습니다. 이 스크립트는 릴리스에 태그를 지정하고 개발 브랜치를 사용하기 때문에 우리에게 잘 작동합니다. 우리는 각 버전마다 별도의 브랜치를 유지하지 않습니다.

git-rebase최근 반환 코드 1로 인해 실패하기 시작했습니다. 디버깅 중 상황은 다음과 같습니다.

$ bash -x ./master-merge.sh 
++ git rev-parse HEAD
+ [[ -z 66dc925f94c15f92d0a2f16a03d8776df33e9144 ]]
+ ret_code=0
++ git rev-parse --abbrev-ref HEAD
+ current=master
+ git fetch --all
+ [[ 0 -eq 0 ]]
++ git branch -vv
++ grep -v ': gone]'
++ awk '{print $1}'
+ for branch in '$(git branch -vv | grep -v ": gone]" | awk '\''{print $1}'\'')'
+ '[' -e detsig ']'
+ echo 'Merging detsig'
Merging detsig
+ git checkout detsig
+ [[ 0 -ne 0 ]]
+ git rebase origin/detsig
+ [[ 1 -ne 0 ]]
+ echo 'Rebase failed for detsig'
Rebase failed for detsig
+ ret_code=1
+ continue
+ for branch in '$(git branch -vv | grep -v ": gone]" | awk '\''{print $1}'\'')'
+ '[' -e ecies ']'
+ echo 'Merging ecies'
Merging ecies
+ git checkout ecies
+ [[ 0 -ne 0 ]]
+ git rebase origin/ecies
+ [[ 1 -ne 0 ]]
+ echo 'Rebase failed for ecies'
Rebase failed for ecies
+ ret_code=1
+ continue
+ for branch in '$(git branch -vv | grep -v ": gone]" | awk '\''{print $1}'\'')'
+ '[' -e hmqv ']'
+ echo 'Merging hmqv'
Merging hmqv
+ git checkout hmqv
+ [[ 0 -ne 0 ]]
+ git rebase origin/hmqv
+ [[ 1 -ne 0 ]]
+ echo 'Rebase failed for hmqv'
Rebase failed for hmqv
+ ret_code=1
+ continue

이것git-rebase매뉴얼 페이지반환 코드는 논의되지 않았으므로 그것이 무엇을 의미하는지 잘 모르겠습니다. 또한 이 명령이 반환할 수 있는 다른 값이 무엇인지 잘 모르겠습니다.

git-rebase반환 코드 1은 무엇을 의미합니까? git-rebase테스트를 완화할 수 있도록 "하드 오류" 및 "소프트 오류" 반환 코드가 있습니까 0?


$ git --version
git version 1.8.5.2 (Apple Git-48)

$ cat master-merge.sh 
#!/usr/bin/env bash

# make sure this is a Git directory
if [[ (-z $(git rev-parse HEAD 2>/dev/null)) ]]; then
    echo "$PWD is not a Git repository"
    [[ "$0" = "$BASH_SOURCE" ]] && exit 2 || return 2
fi

ret_code=0
current=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)

git fetch --all &>/dev/null
if [[ ("$?" -eq "0") ]]; then
    for branch in $(git branch -vv | grep -v ": gone]" | awk '{print $1}'); do

        # For some reason, this picks up all files
        if [ -e "$branch" ]; then
            continue
        fi

        echo "Merging $branch"

        git checkout "$branch" &>/dev/null
        if [[ ("$?" -ne "0") ]]; then
            echo "Checkout failed for $branch"
            ret_code=1
            continue
        fi

        git rebase "origin/$branch" &>/dev/null
        if [[ ("$?" -ne "0") ]]; then
            echo "Rebase failed for $branch"
            ret_code=1
            continue
        fi

        git merge master -m "Merge 'master' into '$branch'"
        if [[ ("$?" -ne "0") ]]; then
            echo "Merge failed for $branch"
            ret_code=1
            continue
        fi

        git push
        if [[ ("$?" -ne "0") ]]; then
            echo "Push failed for $branch"
            ret_code=1
            continue
        fi
    done    
fi

if [[ (! -z "$current") ]]; then
    echo "Switching to $current"
    git checkout "$current" &>/dev/null
fi

[[ "$0" = "$BASH_SOURCE" ]] && exit "$ret_code" || return "$ret_code"

관련 정보