すべてのサブディレクトリに対してgit pullを実行する [重複] 質問する

すべてのサブディレクトリに対してgit pullを実行する [重複] 質問する

各リポジトリのルート ディレクトリに移動せずに、共有親ディレクトリから複数の git リポジトリを更新するにはどうすればよいですかcd? 以下はすべて個別の git リポジトリ (サブモジュールではない) です。

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

これらすべてを一度に更新するか、少なくとも現在のワークフローを簡素化したいと考えています。

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

ベストアンサー1

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/{} pullgitは個々のディレクトリをプルします

find を試してみるには、echoafterを使用して-execプレビューすることをお勧めします。例:

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

注:-depth 1オプションが利用できない場合は、 を試してください-mindepth 1 -maxdepth 1

おすすめ記事