天天看點

git中怎樣忽略.idea/檔案和目錄

git中怎樣忽略.idea/檔案和目錄

Git是一個流行的版本控制系統。它是開發人員如何在項目中協作和工作的方式。

Git允許您跟蹤随着時間推移對項目所做的更改。除此之外,如果您想撤消更改,它還允許您恢複到以前的版本。

Git的工作方式是使用Git add指令在項目中暫存檔案,然後使用Git commit指令送出檔案。

當你作為團隊的一員在一個項目中工作時,有時你不想與他人共享項目的某些檔案或部分内容。

換句話說,您不希望将這些特定的檔案包含或送出到項目的主版本。這就是為什麼你可能不想使用git add .指令将目前git目錄中的每一個檔案進行更新。

當你使用git commit指令時,每個檔案都會被送出——這也包括不需要或不應該送出的檔案。

你可能希望Git忽略特定的檔案,但是沒有Git ignore指令來實作這個目的。

那麼,如何告訴Git忽略并不跟蹤特定的檔案呢?使用.gitignore檔案。

在本文中,您将了解什麼是.gitignore檔案,如何建立一個檔案,以及如何使用它來忽略檔案和檔案夾。您還将看到如何忽略之前送出的檔案。

git中怎樣忽略.idea/檔案和目錄

目前運作的Git存儲庫中的每個檔案都有以下狀态之一:

tracked -這些是Git所知道的所有檔案或目錄。這些是新暫存(用git add添加的)和送出(用git commit送出的)到主倉庫的檔案和目錄。

untracked -這些是在工作目錄中建立的任何新檔案或目錄,但還沒有暫存(或使用git add指令添加)。

ignored -這些是Git在Git存儲庫中完全排除、忽略和不知道的所有檔案或目錄。從本質上說,這是一種告訴Git哪些未跟蹤的檔案應該保持不跟蹤且永遠不送出的方式。

所有被忽略的檔案都被放置在.gitignore檔案裡。

.gitignore檔案是一個純文字檔案,它包含來自項目的所有指定檔案和檔案夾的清單,Git應該忽略和不跟蹤這些檔案和檔案夾。

在.gitignore内部,您可以通過提到特定檔案或檔案夾的名稱或模式,告訴Git隻忽略單個檔案或檔案夾。您還可以使用相同的方法告訴Git忽略多個檔案或檔案夾。

git中怎樣忽略.idea/檔案和目錄

通常,.gitignore檔案被放置在存儲庫的根目錄中。根目錄也稱為父目錄和目前工作目錄。根檔案夾包含組成項目的所有檔案和其他檔案夾。也就是說,您可以将它放在存儲庫中的任何檔案夾中。你甚至可以有多個.gitignore檔案。

在macOS或者Linux系統中建立.gitignore檔案可以使用指令行,打開終端,然後使用cd指令導航到包含項目的根檔案夾,并輸入以下指令為您的目錄建立一個.gitignore檔案:

touch .gitignore

預設情況下,名稱前面帶點(.)的檔案是隐藏的。

單獨使用ls指令時,隐藏檔案是不可見的。要從指令行檢視所有檔案,包括隐藏檔案,使用-a标志和ls指令,如下所示:

ls -a
git中怎樣忽略.idea/檔案和目錄

你應該考慮添加到.gitignore檔案中的檔案類型是不需要送出的任何檔案。出于安全原因,您可能不希望送出它們,或者因為它們對您來說是本地的,是以對于與您從事同一項目的其他開發人員來說是不必要的。

以下這些内容可能會包含在檔案中:

作業系統檔案。每個作業系統(如macOS、Windows和Linux)都會生成特定于系統的隐藏檔案,其他開發人員不需要使用這些檔案,因為他們的系統也會生成這些檔案。例如,在macOS上,Finder生成一個. ds_store檔案,其中包括使用者對檔案夾外觀和顯示的首選項,例如圖示的大小和位置。

由代碼編輯器和IDE (IDE代表內建開發環境)等應用程式生成的配置檔案。這些檔案是根據您、您的配置和您的首選項設定定制的。

從項目中使用的程式設計語言或架構自動生成的檔案,以及編譯後的特定于代碼的檔案,如.o檔案。

包管理器生成的檔案夾,比如npm的node_modules檔案夾。這是一個用于儲存和跟蹤本地安裝的每個包的依賴項的檔案夾。

包含敏感資料和個人資訊的檔案。此類檔案的一些例子是帶有您的憑證(使用者名和密碼)的檔案和帶有環境變量的檔案,如.env檔案(.env檔案包含需要保持安全和私有的API密鑰)。

運作時檔案,如.log檔案。它們提供關于作業系統的使用活動和錯誤的資訊,以及作業系統中發生的事件的曆史記錄。

如果您隻想忽略一個特定的檔案,則需要提供從項目根目錄到該檔案的完整路徑。

如何忽略git裡的檔案和檔案夾

例如,如果你想忽略根目錄下的一個text.txt檔案,你可以這樣做:

/text.txt

如果您想忽略位于根目錄下test目錄中的text.txt檔案,您可以執行以下操作:

/test/text.txt

上面内容也可這樣寫:

test/text.txt

如果您想要忽略所有具有特定名稱的檔案,則需要寫入檔案的字面名稱。

例如,如果你想忽略任何text.txt檔案,你可以在.gitignore中添加以下内容:

text.txt

在這種情況下,您不需要提供特定檔案的完整路徑。此模式将忽略位于項目中任何位置的具有該特定名稱的所有檔案。

要忽略一個完整的目錄及其所有内容,你需要在目錄名的最後加上斜杠/:

test/

該指令将忽略位于項目中任何位置的名為test的目錄(包括該目錄中的其他檔案和其他子目錄)。

需要注意的是,如果隻寫檔案的名稱,或者隻寫目錄的名稱而不加斜杠/,那麼該模式将比對具有該名稱的任何檔案或目錄:

matches any files and directories with the name test

test

如果您想忽略以特定單詞開頭的任何檔案或目錄,該怎麼辦?

假設您希望忽略所有名稱以img開頭的檔案和目錄。要做到這一點,你需要指定你想要忽略的名稱,後面跟着*通配符選擇器,就像這樣:

img*

該指令将忽略所有名稱以img開頭的檔案和目錄。

但是,如果您想忽略任何以特定單詞結尾的檔案或目錄,該怎麼辦呢?

如果希望忽略以特定檔案擴充名結尾的所有檔案,則需要使用*通配符選擇器,後面跟着要忽略的檔案擴充名。

例如,如果你想忽略所有以.md檔案擴充名結尾的markdown檔案,你可以在.gitignore檔案中添加以下内容:

*.md

該模式将比對項目中任何以.md擴充名結尾的檔案。

前面介紹了如何忽略以特定字尾結尾的所有檔案。如果您想要做一個例外,并且有一個帶有該字尾的檔案不想忽略,會發生什麼情況呢?

假設你在.gitignore檔案中添加了以下内容:

.md

該模式忽略所有以.md結尾的檔案,但您不希望Git忽略README.md檔案。

要做到這一點,您需要使用帶有感歎号的否定模式,!,來使該檔案失效,否則該檔案将會被忽略:

ignores all .md files

.md

does not ignore the README.md file

!README.md

對于.gitignore檔案中的這兩種模式,所有以.md結尾的檔案都會被忽略,除了README.md檔案。

要注意的是,如果忽略整個目錄,此模式将不起作用。

假設你忽略了所有的測試目錄:

test/

假設在一個測試檔案夾中,有一個檔案,例如.Md,你不想忽視的。

你不能像這樣對一個被忽略的目錄中的檔案進行否定:

ignore all directories with the name test

test/

trying to negate a file inside an ignored directory won’t work

!test/example.md

最好的做法是建立一個.gitignore檔案,其中包含建立新存儲庫時要忽略的所有檔案和不同的檔案模式——在送出之前。

Git隻能忽略尚未送出到存儲庫的未跟蹤檔案。

如果您在過去已經送出了一個檔案,但希望沒有送出該怎麼辦?

假設您不小心送出了一個存儲環境變量的.env檔案。

你首先需要更新.gitignore檔案以包含.env檔案:

add .env file to .gitignore

echo ".env" >> .gitignore      

現在,你需要告訴Git不要跟蹤這個檔案,把它從索引中删除(如果是檔案夾需要添加-r選項):

git rm --cached .env      

git rm指令和–cached選項一起從存儲庫中删除檔案,但不删除實際的檔案。這意味着該檔案作為一個被忽略的檔案保留在您的本地系統和工作目錄中。

git status将顯示該檔案已不在存儲庫中,而輸入ls指令将顯示該檔案存在于本地檔案系統中。

如果希望從存儲庫和本地系統中删除檔案,請忽略–cached選項。

接下來,使用git add指令将.gitignore添加到暫存區:

git add .gitignore      

最後,使用git commit指令送出.gitignore檔案:

git commit -m "update ignored files"      

福利:

送出代碼忽略配置檔案

​​

​git update-index --assume-unchanged src/main/resources/application.properties​

​​ 取消忽略配置檔案

​git update-index --no-assume-unchanged src/main/resources/application.properties​

現在您已經知道了忽略Git中的檔案和檔案夾的基本知識。

結語