如何让'git add`与`xargs`一起工作

时间:2016-06-20 20:13:07

标签: git

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

我应该怎样做才能使xargsgit add一起使用?

3 个答案:

答案 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