小编典典

在所有子目录上运行 git pull

all

如何在不cd进入每个 repo 的根目录的情况下从其共享父目录中更新多个 git 存储库?我有以下都是单独的 git 存储库( 不是 子模块):

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

我想一次全部更新它们,或者至少简化我当前的工作流程:

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

等等


阅读 136

收藏
2022-04-20

共1个答案

小编典典

在本例中,从父目录运行以下命令plugins

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

澄清:

  • find .搜索当前目录
  • -type d查找目录,而不是文件
  • -depth 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.

2022-04-20