xargs与dos2unix一起使用,但它不能与git add一起使用。 为什么呢?
$ git status -s -uno | sed -n 's/^...//p' | xargs dos2unix -u
dos2unix: converting file Server.C to UNIX format ...
dos2unix: converting file Proxy.C to UNIX format ...
dos2unix: converting file Proxy.H to UNIX format ...
$ git status -s -uno
M Server.C
M Proxy.C
M Proxy.H
$ git status -s -uno | sed -n 's/^...//p'
Server.C
Proxy.C
Proxy.H
$ git status -s -uno | sed -n 's/^...//p' | xargs git add
xargs: git: No such file or directory
我应该怎样做才能使xargs
与git add
一起使用?
答案 0 :(得分:3)
行git status -s -uno | sed -n 's/^...//p' | xargs git add
是正确的,并在我测试时有效。
相关的错误消息实际上是git: No such file or directory
。即找不到git
命令,因此请尝试使用... | xargs echo $PATH
之类的命令对其进行调试,以查看$PATH
进程中xargs
的内容。
此外,正如您所编写的那样,它提供了与
相同的git
调用
git add `git status -s -uno | sed -n 's/^...//p'`
即。您的示例中为git add Server.C Proxy.C Proxy.H
(尝试使用... | xargs echo
代替... | xargs git add
)
如果由于某种原因(您可以将git
作为参数提供多少个文件名?),则需要单独的git add
个调用
你需要使用
... | xargs -L1 git add
使xargs
使用每一行作为单独git add
答案 1 :(得分:1)
您可能没有正确的git add文件路径。用git add替换echo来查看传入的内容以及应该使用的路径。也许指定-u到git add并且不传入所有文件,并且所有已更改的跟踪文件都将被添加到索引中。
答案 2 :(得分:0)
将刚删除的.d(依赖)文件添加到GIT中的示例:
git status |grep "\.d$" |awk {"print \$2"}| xargs git add