Bunu sadece bir git komutuyla yapamazsınız, ancak bir bash satırı ile otomatikleştirebilirsiniz.
Tüm dalları tek bir satırla güvenli bir şekilde güncellemek için yaptığım şey:
git fetch --all && for branch in $(git branch | sed '/*/{$q;h;d};$G' | tr -d '*') ; do git checkout $branch && git merge --ff-only || break ; done
Bir dalı hızlı ileri alamazsa veya bir hatayla karşılaşamazsa, kontrolü geri alıp manuel olarak birleştirebilmeniz için sizi durdurup sizi o dalda bırakacaktır.
Tüm şubeler hızlı yönlendirilebiliyorsa, o anda bulunduğunuz şubeyle sona erecek ve sizi güncellemeden önce bulunduğunuz yerde bırakacaktır.
açıklamalar:
Daha iyi okunabilirlik için birkaç satıra bölünebilir:
git fetch --all && \
for branch in $(git branch | sed '/*/{$q;h;d};$G' | tr -d '*')
do git checkout $branch && \
git merge --ff-only || break
done
git fetch --all && ... => Tüm uzaktan kumandalardaki tüm referansları alır ve hata yoksa sonraki komutla devam eder.
git branch | sed '/*/{$q;h;d};$G' | tr -d '*'=> Çıkışında itibaren git branch, sedbir satırı almak *ve sonunda (o kadar geçerli dal son güncelleme olacağını) taşıyın. Sonra trsadece *.
for branch in $(...) ; do git checkout $branch && git merge --ff-only || break ; done=> Önceki komuttan elde edilen her dal adı için bu dalı kontrol edin ve bir hızlı ileri alma ile birleştirmeyi deneyin. Başarısız olursa breakçağrılır ve komut burada durur.
Tabii ki, yerine git merge --ff-onlyile git rebaseİstediğin buysa.
Son olarak, bir diğer ad olarak bashrc'nize koyabilirsiniz :
alias git-pull-all='git fetch --all && for branch in $(git branch | sed '\''/*/{$q;h;d};$G'\'' | tr -d "*") ; do git checkout $branch && git merge --ff-only || break ; done'
Ya da 've' ile uğraşmaktan korkuyorsanız ya da editörünüzde sözdizimsel okunabilirliği korumayı tercih ediyorsanız, bunu bir işlev olarak ilan edebilirsiniz:
git-pull-all()
{
git fetch --all && for branch in $(git branch | sed '/*/{$q;h;d};$G' | tr -d '*') ; do git checkout $branch && git merge --ff-only || break ; done
}
Bonus:
sed '/*/{$q;h;d};$G'Parça hakkında açıklama yapmak isteyenler için :
/*/=> A ile satırı arayın *.
{$q => Son satırdaysa, çık (mevcut dal zaten listede sonuncu olduğu için hiçbir şey yapmamız gerekmez).
;h;d} => Aksi takdirde, satırı bekletme arabelleğinde saklayın ve geçerli liste konumunda silin.
;$G => Son satıra ulaştığında, tutma arabelleğinin içeriğini ekleyin.