2014-10-15 4 views

답변

1
#!/bin/bash 

git checkout master 
git pull 

branches=() 
eval "$(git for-each-ref --shell --format='branches+=(%(refname))' refs/heads/)" 

for branch in "${branches[@]}"; do 
    branch=`expr substr $branch 12 100` 
    git checkout $branch 
    git merge master 
done 

git checkout master 
+1

윽 ...'그 평가 ...'와 사마귀'지점 = ($ (자식에 대한-각-REF - - branch = $ {branch // refs \/heads \ /}'...로 시작하는'branch = ...'비트 ... 그렇지 않으면 (-format = "% (refname)"refs/head) , 나는 그것이 맞다고 생각합니다. – twalberg

+0

어떤 단계에서도 병합이 충돌하는 경우 모든 혼란스러운 상황에 처하게 될 것입니다. 그리고 형식 지정자를 짧게 사용하면 브랜치 이름 만 얻을 수 있습니다. –

+0

@ AndrewC 일반적인 경우에 아주 좋은 지적입니다. 그러나 만약 당신이하고있는 일이'git fetch' 다음에'origin'과 일치하는 모든 추적 브랜치를 업데이트한다면, 이런 종류의 일은 괜찮을 것입니다. 그러나 스크립트에 큰 빨간색 경고 플래그는 나쁜 생각이 아닙니다. 또한, ': short'수정자를 잊어 버렸습니다. 미리 알림을 보내 주셔서 감사합니다 ... – twalberg

0

오프 마스터의 분기 있다고 가정 : 나는 대체 할

git checkout my_branch 
git rebase master 
+0

그건 맞지 않아. OP는 "master"에 * rebase * my_branch가 아닌 "my_branch"에 * master를 병합하려고합니다. – Jubobs

+1

OP는 자신이 원하는 것을 분명하게 알 수 있고 리베이스를 포함하지 않는 자체 응답을 게시했습니다. 나는 네 답이 표적에서 벗어난 것 같아. – Jubobs

관련 문제