我正在尝试git的一些示例说明,并遇到了这种特殊情况,当我们执行a时git rm *
,它不会.*
在第一次尝试中删除文件。为什么会这样呢?
mkdir -p test_repo1/folder && cd test_repo1
touch .testfile1 .testfile2 testfile3 folder/testfile4 folder/.testfile5
git init && git add . && git commit -m "test commit"
如果现在执行git rm
以下操作,则必须第二次删除所有文件
$ git rm -r *
rm 'folder/.testfile5'
rm 'folder/testfile4'
rm 'testfile3'
$ git rm -r *
rm '.testfile1'
rm '.testfile2'
为什么git在第一次尝试时不删除所有文件?另外,为什么只在具有回购根目录的文件中发生这种情况?
有趣的是,如果我只有这些.testfiles
,那么git会在第一次尝试中将其删除。
我正在使用git版本 1.7.9.5
默认情况下,在大多数Shell中,通配符都会由Shell进行扩展,并且扩展不包括点文件。
因此,到git
执行时,第一个命令已变为
git rm -r folder testfile3
第二个可能是文字
git rm -r *
它git
然后通过自身扩张。
正如Keith所言,要一次性删除所有内容,请防止Shell扩展通配符,以便git
第一次进行扩展。可以使用双引号或单引号,也可以使用星号前的反斜杠。我倾向于单引号:
git rm -r '*'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句