git add和被ignore的檔案

2021-08-21 21:19:40 字數 1121 閱讀 7212

如果有如下的目錄結構:

workspace tree

hello.c                           d

hello.o                           |

.gitignore                     say.c

say.o

.gitignore

在workspace tree的跟目錄下有3個檔案hello.c,hello.o,.gitignore以及乙個資料夾d,其中根目錄下的.gitignore檔案忽略.o檔案。在資料夾d下也有3個檔案,say.c, say.o,.gitignore,其中資料夾d下的.gitignore不忽略.o檔案。hello.o和say.o都是剛剛編譯出來的檔案。此時,如果在根目錄下執行

git add *

則會報錯:

the following paths are ignored by one of your .gitignore files:

hello.o

use -f if

you really want to add them

fatal:no files add

而如果執行:

git add \*

則可以將d/say.o成功的新增到index中。

通過git add --help查詢發現:

1) git add 後面跟的檔案有被忽略的檔案,那麼操作失敗;

2) git add 通過遍歷目錄遇到了要被忽略的檔案,此檔案不會被加入到index

3) git add 遇到由git展開glob(不是由shell展開)形成的要被忽略的檔案,此檔案不會被加入到index

因此,在上面的情形中,直接執行git add *是進行的shell 展開glob,此時相當於執行git add hello.o(由於shell 展開glob無法cross目錄,因此沒有匹配d/say.o),而hello.o是要被忽略的檔案,所以操作失敗;如果執行git add \*,\*由git展開,可以匹配hello.o,d/say.o,根據上面的原則3),hello.o不會被加入到index中,因此此時相當於執行git add d/say.o,所以操作得以正確進行。

git add 和git add A的區別

git add a和git add git add u在功能上看似很相近,但還是存在一點差別 git add 他會監控工作區的狀態樹,使用它會把工作時的所有變化提交到暫存區,包括檔案內容修改 modified 以及新檔案 new 但不包括被刪除的檔案。git add u 他僅監控已經被add的檔案 ...

git add 和 git push 命令詳解

一 git add 命令 git add 該命令會監控工作區的狀態樹,使用它會把工作時的所有變化提交到暫存區,包括檔案內容修改 modified 以及新檔案 new 但不包括被刪除的檔案。git add u 該命令僅監控已經被add的檔案 即tracked file 他會將被修改或刪除的檔案提交 到...

事件的accept 與ignore 的傳遞

事件是qt中比較難理解的概念,需要花費大量時間鑽研。下面簡單講解 accept 與 ignore 在程式中的傳遞邏輯 1 存在基類 a,其子類 b,層次部件 mainwindow,分別建立類的例項 testa testb mainwindow 2 testb收到 事件c,若選擇 accept 則由t...