Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git使用xargs撤消别名_Git_Alias_Xargs - Fatal编程技术网

git使用xargs撤消别名

git使用xargs撤消别名,git,alias,xargs,Git,Alias,Xargs,我有一个git别名(git undo),可以撤消工作目录中的所有内容,包括新文件、更改的文件和删除的文件: !git reset --hard && git ls-files -d | xargs -0 git rm --ignore-unmatch && git clean -fq 在OSX上,这非常有效。但是,在Linux上,我遇到了以下问题:如果没有从存储库中删除任何文件,git ls files-d | xargs-0 git rm--ignore un

我有一个git别名(
git undo
),可以撤消工作目录中的所有内容,包括新文件、更改的文件和删除的文件:

!git reset --hard && git ls-files -d | xargs -0 git rm --ignore-unmatch && git clean -fq
在OSX上,这非常有效。但是,在Linux上,我遇到了以下问题:如果没有从存储库中删除任何文件,
git ls files-d | xargs-0 git rm--ignore unmatch
命令将失败(
xargs
将不传递任何内容)

如果
xargs从
git ls文件
没有收到任何内容,是否有办法让它以静默方式继续运行?

来自:

--如果为空,则不运行,-r
如果标准输入不包含任何非空白,请不要运行
命令。通常,即使存在
没有输入。此选项是GNU扩展

确保您的xargs版本具有以下选项(
man xargs

--如果为空,则不运行,-r
如果标准输入不包含任何非空白,请不要运行
命令。通常,即使存在
没有输入。此选项是GNU扩展


确保您的xargs版本具有该选项(
man xargs

也许您想使用xargs的“-r”选项:


这样,如果
ls文件
没有显示任何内容,xargs根本不会调用
git rm

也许您想使用xargs的“-r”选项:

这样,如果
ls文件
没有显示任何内容,xargs根本不会调用
git rm

在它前面有一个
git reset--hard
,那么
git ls文件-d
应该永远不会生成任何输出(如果是这样,您可能希望使用
gitls files-d-z
xargs-0
生成NUL终止的输出)

一旦执行了
git reset--hard
,工作树的跟踪部分和整个索引将与HEAD commit匹配。
git ls files-d
将只显示索引中的文件,而不显示工作树中的文件。由于工作树将拥有索引所拥有的所有内容,因此此后不应该有任何已删除的文件r硬重置

git clean
位用于删除未跟踪的文件(git reset--hard
不会触及该文件),但您可能希望将其更改为
git clean-dfq
以同时删除完全未跟踪的目录)。

在它前面加上一个
git reset--hard
git ls files-d
不应生成任何输出(如果生成了输出,您可能希望使用
git ls files-d-z
xargs-0
生成NUL终止的输出)

一旦您完成了git reset--hard,工作树的跟踪部分和整个索引将与HEAD commit匹配
git ls files-d
将仅显示索引中但不在工作树中的文件。由于工作树将拥有索引所拥有的一切,因此在硬重置之后,不应该有任何已删除的文件


git clean
位用于删除未跟踪的文件(git reset--hard不会触及),但您可能希望将其更改为
git clean-dfq
以删除完全未跟踪的目录)。

有“git clean”(man git clean):从工作树中删除未跟踪的文件。

有“git clean”(man git clean):从工作树中删除未跟踪的文件,这看起来像是答案-奇怪的是,OS X版本的xargs没有这个选项(或默认使用它)。我想我必须创建一些特定于OS的别名。;)OS X基于FreeBSD,FreeBSD版本的xargs也是如此。它兼容POSIX,但没有GNU扩展。这看起来像是答案——奇怪的是,OSX版本的xargs没有这个选项(或者默认使用它)。我想我必须制作一些特定于操作系统的别名OSX基于FreeBSD,xargs的FreeBSD版本也是如此。它与POSIX兼容,但没有GNU扩展。如果要将
-0
选项传递给
xargs
,那么将
-z
选项与
git ls文件一起使用非常重要。请注意,要撤消所有操作,您可能(也可能不)想说
git clean-qfdx
(请参阅
git help clean
)如果您要将
-0
选项传递给
xargs
,那么对
git ls文件使用
-z
选项也很重要。请注意,要撤消所有操作,您可能(也可能不)想说
git clean-qfdx
(请参见
git help clean
)啊哈,好的-我明白了。似乎是想一下子做太多。啊,好吧,我明白了。似乎是想一下子做太多。
xargs -r -0 git rm --ignore-unmatch