0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

親ディレクトリからサブフォルダのGitリポジトリを一気にpullする

Posted at

前書き

普段テキストエディタでvimを使っています。
いろんなプラグインを使っていますので .vim/pack/**/start/の直下にプラグインごと数多くのサブフォルダが存在しています。
それをターミナル上でいちいちcd coc git pull cd ..みたいな感じでやるのはあまりにも非効率的だと思ったので検索したら下記のようなコマンドを見つかりました。

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

commandの解釈

  • find . : 現在のディレクトリを検索する
  • -type d : その中でファイルではなくディレクトリだけを検索する
  • -depth 1 : 検索対象は現在のディレクトリから1つ下の階層のフォルダとする(サブディレクトリ)
  • git --git-dir={}/.git --work-tree=$PWD/{} pull origin master \;
    : 検索しているディレクトリに.gitのディレクトリが存在するならgitのwork-treeを現在の検索中のディレクトリとし、git pull origin masterのコマンドを実行する

ちょっとした変更

find . -type d -depth 1 -print -exec git -C {} pull \;
  • -print : 検索しているディレクトリ名をターミナルに出力する
  • -C : gitのver.1.8.5から--git-dir={}/.git --work-tree=$PWD/{}の部分の代わりに使えるようです。
  • pull : 個人的にはブランチ名をmasterの変わりにmainにしていることと、単純にコマンドをもうちょっと短くしたかったとのことでただpullだけにして使っています。

参考元

Stack Overflow: Run git pull over all subdirectories
Stack Overflow: git pull while not in a git directory

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?