运行git,对所有子目录进行拉出。

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

如何从共享父目录更新多个git存储库cd进入每个回购公司的根目录?

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

我想同时更新它们,或者至少简化我当前的工作流程:

cd ~/plugins/admin
git pull origin master
cd ../chart
git pull
风wind肖肖风wind肖肖提问于
刺激回答于

从父目录运行以下命令,plugins在这种情况下:

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

澄清:

  • find .搜索当前目录
  • -type d查找目录,而不是文件
  • -depth 1获取一个子目录的最大深度。
  • -exec {} \;对每个find运行自定义命令
  • git --git-dir={}/.git --work-tree=$PWD/{} pullGit会提取各个目录。

为了玩查找,我建议使用echo-exec预览,例如:

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

注:如果-depth 1选项不可用,请尝试-mindepth 1 -maxdepth 1.

艾迦号游戏程序员、《游戏引擎架构》译者回答于
ls | xargs -I{} git -C {} pull

并行地这样做:

ls | xargs -P10 -I{} git -C {} pull

扫码关注云+社区