質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

1回答

528閲覧

特定の名前のブランチをmergeするシェルスクリプト

退会済みユーザー

退会済みユーザー

総合スコア0

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

1クリップ

投稿2018/10/20 10:30

背景

複数人でLaTeXのプロジェクトを編集していて、CIで常に最新の成果物を生成したいと考えています。

問題

各々が異なるブランチ(ブランチ名: chap-*)を編集しています。現在は、以下のbashに対象ブランチを1つずつ記入していますが、ブランチが増えていくと運用が大変です。

bash

1#!/bin/sh 2 3# git clone & cd 4 5# merge all chap-* branches 6git checkout -b build-branch origin/master 7git merge origin/chap-hoge 8git merge origin/chap-fuga 9git merge origin/chap-foobar 10 11# build and deploy 12platex main.tex 13# ...

質問

存在するorigin/chap-*ブランチをすべてmergeする方法はありますでしょうか(コンフリクトは考慮しなくてOKです)。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

xargsを使用してchap-*に該当するブランチそれぞれに対してmergeしてみてはいかがでしょうか

bash

1git branch | grep chap-* | xargs -p -I {} git merge origin/{}

投稿2018/10/28 16:54

hiroCSJT

総合スコア93

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/10/29 05:20

できました!ありがとうございます!! P.S. ↓のような長ったらしいことをやっていたのですが、1行でできるんですね、、、勉強になりました。 ``` branches=() for each in $(git for-each-ref); do branches+=($(echo $each | grep origin | sed -e "s#.*remotes/##" | grep "^origin/chap-*")) done for branch in "${branches[@]}"; do git merge $branch done ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問