1. ホーム
  2. ギット

[解決済み】全てのサブディレクトリに対してgit pullを実行する【重複】。

2022-04-16 03:57:52

質問

複数の git リポジトリを共有の親ディレクトリから更新する際に cd '各レポのルートディレクトリにイング?私は以下のような、すべて別々の git リポジトリを持っています ( ではなく サブモジュール)を作成しました。

/plugins/cms
/plugins/admin
/plugins/chart

一度に更新したい、せめて今のワークフローを簡略化したい。

cd ~/plugins/admin
git pull origin master
cd ../chart
git pull

などです。

解決方法は?

親ディレクトリから以下を実行します。 plugins この場合

find . -type d -depth 1 -exec git --git-dir={}/.git --work-tree=$PWD/{} pull origin master \;

明確にするため。

  • find . カレントディレクトリを検索します。
  • -type d は、ファイルではなくディレクトリを検索します。
  • -depth 1 最大でサブディレクトリ1つ分の深さのため
  • -exec {} \; すべての検索に対してカスタムコマンドを実行します。
  • git --git-dir={}/.git --work-tree=$PWD/{} pull git は個々のディレクトリをプルする

findを使いこなすには echo の後に -exec をプレビューする、など。

find . -type d -depth 1 -exec echo git --git-dir={}/.git --work-tree=$PWD/{} status \;

注:もし -depth 1 オプションが利用できない場合は -mindepth 1 -maxdepth 1 .