V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hackpro
V2EX  ›  Apple

分享一条命令可批量更新一个目录下的 git repository

  •  
  •   hackpro · 2016-12-13 19:08:06 +08:00 · 2537 次点击
    这是一个创建于 2900 天前的主题,其中的信息可能已经有所发展或是发生改变。
    find . ! -path . -maxdepth 1 -type d | xargs -L 1 bash -c 'cd "$0" && pwd && git pull'
    

    主要是先枚举目录下的目录(记得去掉当前目录) 然后利用 xargs 进行处理

    7 条回复    2016-12-14 00:55:23 +08:00
    slixurd
        1
    slixurd  
       2016-12-13 19:22:08 +08:00
    ls | xargs -I {} bash -c 'cd {} && pwd && git status'
    这样也是一样的啊= =....
    leopku
        2
    leopku  
       2016-12-13 20:33:16 +08:00
    改进

    find . ! -path . -maxdepth 1 -type d | xargs -L 1 bash -c 'cd "$0" && pwd && git reset HEAD --hard && git fetch && git pull'
    xjp
        3
    xjp  
       2016-12-13 20:51:13 +08:00 via iPhone
    给楼上的所有分享一个知识点 git 可以指定操作目录的 不需要 cd 过去的
    billlee
        4
    billlee  
       2016-12-13 21:42:27 +08:00
    @slixurd 你这个只适用于 $PWD 下只有目录的情况
    hackpro
        5
    hackpro  
    OP
       2016-12-13 23:13:05 +08:00
    @leopku
    @slixurd
    @xjp
    @billlee

    顺便请教下 如果这个命令要写成 alias 放在 .zshrc 中的话
    比如 alias upgrade_git="..."
    如何处理命令中本来有的双引号,即 cd "$0"
    binarylu
        6
    binarylu  
       2016-12-14 00:40:20 +08:00
    推荐楼主一个工具: http://fabioz.github.io/mu-repo/ (虽然我并不喜欢他,无奈公司强制使用)
    billlee
        7
    billlee  
       2016-12-14 00:55:23 +08:00
    @hackpro bash 里是可以 blackslash \ 转义的, zsh 没试过,应该查不多吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3279 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 10:40 · PVG 18:40 · LAX 02:40 · JFK 05:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.