在Git項目中,我們經常需要忽略一些文件或文件夾,以避免提交到Git倉庫,例如編譯生成的文件、日誌文件、緩存文件等。Git提供了忽略文件夾的功能,本文將從多個方面詳解Git的忽略文件夾功能。
一、git忽略文件夾的命令
在Git中,我們可以使用.gitignore文件來指定要忽略的文件或文件夾。我們可以使用git命令來創建.gitignore文件,並將其添加到Git倉庫中。具體步驟如下:
$ touch .gitignore
$ git add .gitignore
$ git commit -m "add .gitignore file"
在.gitignore文件中,我們可以使用通配符匹配文件或文件夾,例如:
# 忽略日誌文件
*.log
# 忽略編譯生成的文件夾
build/
# 忽略指定文件
config.ini
以上配置將會忽略所有以.log結尾的文件、build文件夾以及config.ini文件。
二、git忽略文件自動更新
通常情況下,我們對.gitignore文件進行修改後,Git倉庫中已經存在的文件或文件夾不會受影響,需要手動將其從Git倉庫中刪除才能生效。但是,如果我們在.gitignore文件中添加了一個新規則,Git會自動忽略匹配到的文件。例如:
# 忽略所有.log文件
*.log
# 忽略指定目錄下的所有.class文件
/foo/bar/*.class
如果我們在使用Git時添加了一個新的.log文件或/foo/bar目錄下的.class文件,Git會自動將其忽略。
三、git忽略文件夾下所有文件
有時候,我們需要忽略一個文件夾中的所有文件,例如忽略某個文件夾下的node_modules目錄。在.gitignore文件中,我們可以使用 ./ 相對路徑來匹配當前文件夾,例如:
# 忽略當前文件夾下的node_modules目錄
./node_modules/
注意,在匹配文件夾時,最後一定要添加 /,否則Git會將其識別為文件。
四、gitignore忽略文件夾
在某些情況下,我們需要將文件夾從Git倉庫中完全刪除,包括歷史記錄。這時候,我們可以使用git rm命令和git commit命令將其從Git倉庫中刪除。以下是具體的步驟:
$ git rm -r --cached foldername
$ git commit -m "remove foldername from git"
以上命令會將指定的文件夾從Git倉庫中徹底刪除,包括歷史記錄。如果不希望刪除歷史記錄,可以從.gitignore文件中刪除相應的規則,並使用以下命令將其重新添加到Git倉庫中:
$ git add -f foldername
$ git commit -m "re-add foldername to git"
五、git忽略文件夾不起作用
有時候,在.gitignore文件中定義的規則不起作用,導致被忽略的文件或文件夾仍然出現在Git倉庫中。這通常是因為.gitignore文件沒有被正確地添加到Git倉庫中,或者被另一個.gitignore文件所覆蓋。以下是一些排查方法:
1. 確認.gitignore文件是否已經添加到Git倉庫中。執行以下命令:
$ git status
如果.gitignore文件未被追蹤,執行以下命令將其添加到Git倉庫中:
$ git add .gitignore
$ git commit -m "add .gitignore file"
2. 確認.gitignore文件中的規則是否正確。建議使用絕對路徑來定義規則,避免相對路徑帶來的問題。並且建議在.gitignore文件中添加註釋,方便他人理解。
3. 確認是否有其他.gitignore文件所覆蓋。如果有多個.gitignore文件,Git會將其合併,如果有重複的規則,則後面的規則會覆蓋前面的規則。
六、git忽略文件夾及子文件夾
如果我們希望忽略某個文件夾及其所有子文件夾中的文件,可以在.gitignore文件中使用一個通配符 ** 。例如:
# 忽略foo文件夾及其所有子文件夾中的.log文件
foo/**/*.log
以上規則會忽略foo文件夾及其所有子文件夾中所有以.log結尾的文件。
七、git忽略文件夾內層所有文件
有時候,我們需要忽略一個文件夾中的所有文件,但是保留這個文件夾本身。例如,忽略node_modules文件夾中的所有文件,但是不忽略node_modules文件夾本身。在.gitignore文件中,我們可以使用以下規則來實現:
# 忽略node_modules文件夾中的所有文件
node_modules/*
# 但是不忽略node_modules文件夾本身
!node_modules/
以上規則將會忽略node_modules文件夾中的所有文件,但是不忽略node_modules文件夾本身。
八、git忽略文件夾中的某個文件夾
有時候,我們需要忽略一個文件夾中的某個文件夾,例如忽略vendor文件夾。我們可以在.gitignore文件中使用 ! 來取消忽略。例如:
# 忽略vendor文件夾
vendor/
# 但是不忽略vendor/assets文件夾
!vendor/assets/
以上規則會忽略vendor文件夾,但是不忽略vendor/assets文件夾。
九、vscode git忽略文件夾
如果您使用Visual Studio Code進行開發,可以使用.vscode/settings.json文件來配置忽略文件夾。您可以在該文件中添加一個”files.exclude”屬性,來指定要忽略的文件或文件夾。例如:
{
"files.exclude": {
"**/.git": true,
"**/node_modules": true,
"**/build": true,
"**/dist": true
}
}
以上配置將會忽略.git文件夾、node_modules文件夾、build文件夾和dist文件夾。
十、git忽略.idea文件夾
如果您使用IntelliJ IDEA進行開發,可以在.gitignore文件中加入以下規則來忽略.idea文件夾:
# 忽略.idea文件夾
.idea/
如果您希望不忽略某個.idea文件夾下的文件,可以在.gitignore文件中添加以下規則:
# 忽略.idea文件夾
.idea/
# 但是不忽略.idea/codeStyles文件夾
!.idea/codeStyles/
以上規則將會忽略.idea文件夾,但是不忽略.idea/codeStyles文件夾。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/305094.html