Я знайшов чудове рішення для витягування з поточної гілки з усіх підкаталогів, у яких є папка .git, навіть якщо кожне репо має іншу гілку. Команда є однолінійною, досить гнучкою для модифікації для різних команд git і може бути псевдонімом.
Просто скопіюйте та вставте наступне:
find . -type d -maxdepth 2 -name .git -exec sh -c 'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)' {} \;
Розбивши його:
find . -type d -maxdepth 2 -name .git
Знайдіть усі каталоги (-тип d) у поточному каталозі (find.), Які мають ім’я ".git" (-name .git), шукаючи максимум два каталоги вглиб (2, а не 1, оскільки ми шукаємо git у папці git repo).
-exec sh -c
Запустіть наступну команду оболонки (exec sh -c)
'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)'
Змініть каталог на перший аргумент (cd $ 0), потім змініть каталог на один рівень вище, щоб залишити папку .git (cd ..), потім виконайте git pull origin, вказавши гілку, запустивши git rev-parse ... для поточної гілки Фіксація HEAD.
{} \;
"{}" - це відносний шлях до результату, який ми отримуємо від початкової команди пошуку . The; використовується для завершення команди.
Перевірено на MacOS 10.14.6 на zsh. Як є, працює лише тоді, коли віддалені та місцеві відділення називаються однаково, AFAIK.
Ви можете змінити це, щоб отримати статус. Я сподіваюся, ви можете додати аргументи, щоб зробити це більш гнучким, але я ще не пробував.
hg mercurial
.