代码之家  ›  专栏  ›  技术社区  ›  CIsForCookies

如何签出所有修改的文件?

  •  0
  • CIsForCookies  · 技术社区  · 7 年前

    git status | grep modified | awk '{split($0,a,":"); print a[2]}'
    

    git status 返回:

    modified:    a.txt
    modified:    b.txt
    

        a.txt
        b.txt
    

    print 具有 git checkout :

    git status | grep modified | awk '{split($0,a,":"); git checkout a[2]}'
    

    但它不起作用。

    git status | grep modified | awk '{split($0,a,":"); gsub(" ","",a[2]); git checkout a[2]}'
    

    打印 相反

    awk 没有调用命令,只是编辑文本,所以我尝试添加一个 evil 以前,没有用。。。

    我怎样才能做到这一点?

    1 回复  |  直到 7 年前
        1
  •  2
  •   RavinderSingh13 Nikita Bakshi    7 年前

    你能试试下面的(我删除了)吗 grep 从你的代码中分离出来 awk

    git status | awk '/modified/{split($0,a,":"); print "git checkout " a[2] > ("script.ksh")} END{close("script.ksh");system("chmod 755 script.ksh;./script.ksh")}' 
    

    说明: awk 代码只是创建一个脚本文件(仅适用于那些具有字符串的行) modified awk man awk 供使用 system 功能 awk awk 在程序中运行BASH级别的命令。还有一点 close("script.ksh") 应该这样做以避免像OP got这样的错误 file is busy....etc 程序仍在运行,所以文件将在后端打开,在我们关闭它之后,它就可以用来运行它了。

    上面的解决方案使用一个脚本文件来运行所有git语句,以防您希望在不创建文件的情况下运行它们,然后尝试以下操作。

    git status | awk '/modified/{split($0,a,":"); print "git checkout " a[2]}' | sh