Git 如何签出所有修改的文件?
我正在尝试签出我的repo中所有修改的文件:Git 如何签出所有修改的文件?,git,awk,Git,Awk,我正在尝试签出我的repo中所有修改的文件: git status | grep modified | awk '{split($0,a,":"); print a[2]}' 提供文件名,即,git status返回: modified: a.txt modified: b.txt 和awk返回(注意空格): 我尝试将打印替换为git签出: git status | grep modified | awk '{split($0,a,":"); git checkout a[2]}
git status | grep modified | awk '{split($0,a,":"); print a[2]}'
提供文件名,即,git status
返回:
modified: a.txt
modified: b.txt
和awk返回(注意空格):
我尝试将打印
替换为git签出
:
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]}'
当我使用print
而不是git checkout
时,我看到打印文件名时没有任何空格,这是我想要的
然而,这也不起作用,而且没有任何警告。我想这可能是因为awk没有调用命令,只是编辑了文本,所以我之前尝试添加了一个evil
,但没有效果
我怎样才能做到这一点呢?请您尝试一下以下内容(我从您的代码中删除了
grep
部分,因为awk
本身可以搜索文本)一次。我无法测试它,因为git不在我的系统中:)
说明:在awk
中,只需在awk
的帮助下创建脚本文件(仅适用于其中包含字符串已修改的
的行。脚本文件名将为script.ksh),然后通过提供适当的执行权限来执行它。我们可以看到manawk
使用system
的awk
功能,这有助于awk
在其程序中运行BASH级别的命令。还有一点关闭(“script.ksh”)
应避免出现错误,如OP-get文件正忙…等
因为awk
程序仍在运行,所以文件将在后端打开,我们关闭它之后,它就可以用于运行它了
编辑:上述解决方案使用脚本文件来运行所有git语句,以防您希望在不创建文件的情况下运行它们,然后尝试以下操作
git status | awk '/modified/{split($0,a,":"); print "git checkout " a[2]}' | sh
请您尝试一下(我从您的代码中删除了
grep
部分,因为awk
本身可以搜索文本)一次。我无法测试它,因为git不在我的系统中:)
说明:在awk
中,只需在awk
的帮助下创建脚本文件(仅适用于其中包含字符串已修改的
的行。脚本文件名将为script.ksh),然后通过提供适当的执行权限来执行它。我们可以看到manawk
使用system
的awk
功能,这有助于awk
在其程序中运行BASH级别的命令。还有一点关闭(“script.ksh”)
应避免出现错误,如OP-get文件正忙…等
因为awk
程序仍在运行,所以文件将在后端打开,我们关闭它之后,它就可以用于运行它了
编辑:上述解决方案使用脚本文件来运行所有git语句,以防您希望在不创建文件的情况下运行它们,然后尝试以下操作
git status | awk '/modified/{split($0,a,":"); print "git checkout " a[2]}' | sh
我知道你做了什么,但是这在我的机器上失败了:语法错误…@CIsForCookies,试试
git status | awk'/modified/{split($0,a,“:”);打印“git checkout”a[2]>(“script.ksh”)}END{system(“chmod 755 script.ksh;/script.ksh”)}
或git status | awk'/modified/{split($0,a,:”;打印“git checkout”a[2]>“script ksh”}结束{system(“chmod 755 script.ksh;/script.ksh”)}
一次,然后让我知道?输出:文本文件busy@CIsForCookies,哦,对不起,现在编辑了我的代码,我们应该在代码的结尾部分关闭(“script.ksh”)。检查一次?临时文件很没用;只需直接连接到ksh
(或者更确切地说,连接到sh
,尽管文件名有误导性,但这可能是这样做的)。我看到了您所做的,但是这在我的机器上失败了:语法错误…@CIsForCookies,尝试git status | awk'/modified/{split($0,a,“:”);打印“git checkout”a[2]>(.ksh”)}END{system(“chmod 755 script.ksh;/script.ksh”)}
或git status|awk'/modified/{split($0,a,“:”);打印“git checkout”a[2]>“script.ksh”}结束{system(“chmod 755 script.ksh;/script.ksh”)}
一次,然后让我知道?输出:文本文件busy@CIsForCookies哦,对不起,现在编辑了我的代码,我们应该关闭(“script.ksh”)
在该代码的结尾部分。检查一次?临时文件是非常无用的;只需直接连接到ksh
(或者更确切地说,连接到sh
,尽管文件名有误导性,但这很可能会这样做)。为什么不干脆git ls文件-mz | xargs-0 git签出
?为什么不干脆git ls文件-mz | xargs-0 git签出
?
git status | awk '/modified/{split($0,a,":"); print "git checkout " a[2]}' | sh