有人說,我們需要引用*
在:「git rm * .log」和「git rm *。log」有什麼區別?
git rm \*.log
,因爲Git有它的內部文件擴展。但是,什麼是錯的或者什麼是兩者的區別在於VS:
git rm *.log
或在另一種情況下,像
git rm log/*.log
如果外殼擴展它VS讓混帳擴大呢?
有人說,我們需要引用*
在:「git rm * .log」和「git rm *。log」有什麼區別?
git rm \*.log
,因爲Git有它的內部文件擴展。但是,什麼是錯的或者什麼是兩者的區別在於VS:
git rm *.log
或在另一種情況下,像
git rm log/*.log
如果外殼擴展它VS讓混帳擴大呢?
第一個(轉義的)例子被git擴展了,並且會匹配所有跟蹤的文件,而不管它們是否真的存在於樹中。第二個由shell擴展,並且只會匹配存在的文件。例如,做rm *.log; git rm *.log
會從你的目錄中刪除文件,但是而不是將它們從git索引中刪除。事實上,「git rm」命令將返回一個錯誤,因爲你沒有指定任何文件。
我不使用git,所以這更多的是一般思路。
看看這個:
[email protected]:~$ echo *.cpp
Test1.cpp Test2.cpp Test.cpp
與
[email protected]:~$ echo \*.cpp
*.cpp
現在,如果「回聲」是的東西,在源代碼庫運行,第一個版本將專門解決文件存在於我的工作目錄中,如果「git」軟件擴展通配符,該目錄可能與第二個版本可能使用的列表相同或不同。我的工作目錄可能只是源代碼庫知道的文件的一個子集。
在很多情況下,工作目錄應該與存儲庫的內容大致相同,在這種情況下應該沒有真正的區別,但是您也可以在存儲庫中執行諸如「清除所有這些文件」之類的操作,而不必先打擾檢查他們(爲什麼你,如果你想要刪除它們呢......)
根據git如何處理路徑名,用路徑名指定一個模式可能更有區別:/*.cpp會明確列出我的根目錄中的文件可能不是任何存儲庫的一部分。將其作爲/\*.cpp轉義可能會告訴存儲庫軟件在它使用的任何匹配文件上工作,因爲它是內部根目錄。
如果沒有找到匹配'* .log'的文件,默認情況下,Bash會傳遞'* .log'。 –