[英]How to ignore certain files in Git
我有一個包含文件Hello.java
的存儲庫。 當我編譯它時,會生成一個額外的Hello.class
文件。
我在.gitignore
文件中為Hello.class
創建了一個條目。 但是,該文件似乎仍被跟蹤。
如何讓 Git 忽略Hello.class
?
問題是.gitignore
只忽略以前未跟蹤的文件(通過git add
)。 運行git reset name_of_file
以取消暫存文件並保留它。 如果您還想從存儲庫中刪除給定文件(推送后),請使用git rm --cached name_of_file
。
如何忽略新文件
全球范圍內
將要忽略的文件的路徑添加到.gitignore
文件中(並提交它們)。 這些文件條目也將適用於檢出存儲庫的其他人。
本地
將要忽略的文件的路徑添加到.git/info/exclude
文件中。 這些文件條目將僅適用於您的本地工作副本。
如何忽略更改的文件(暫時)
為了忽略更改的文件被列為已修改,您可以使用以下 git 命令:
git update-index --assume-unchanged <file1> <file2> <file3>
要恢復這種無知,請使用以下命令:
git update-index --no-assume-unchanged <file1> <file2> <file3>
將以下行添加到文件.gitignore :
/Hello.class
這將從 Git 中排除Hello.class 。 如果您已經提交了它,請運行以下命令:
git rm Hello.class
如果要從 Git 中排除所有類文件,請將以下行添加到.gitignore :
*.class
創建一個.gitignore
文件。 為此,您只需創建一個.txt
文件並更改擴展名,如下所示:
然后您必須更改名稱,在cmd窗口中寫入以下行:
rename git.txt .gitignore
其中git.txt
是您剛剛創建的文件的名稱。
然后您可以打開該文件並將所有不想添加到存儲庫中的文件寫入。 例如,我的看起來像這樣:
# OS junk files
[Tt]humbs.db
*.DS_Store
# Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
*.pyc
*.xml
ipch/
obj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad
# Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*
# Project files
[Bb]uild/
# Subversion files
.svn
# Microsoft Office temporary files
~$*
一旦你有了這個,你需要將它添加到你的 Git 存儲庫中。 您必須將文件保存在存儲庫所在的位置。
然后在Git Bash中,您必須編寫以下行:
git config --global core.excludesfile ~/.gitignore_global
如果存儲庫已經存在,那么您必須執行以下操作:
git rm -r --cached .
git add .
git commit -m ".gitignore is now working"
如果第 2 步不起作用,那么您應該編寫要添加的文件的整個路徑。
無視:
git update-index --assume-unchanged <path/to/file>
要撤消忽略:
git update-index --no-assume-unchanged <path/to/file>
您可以使用以下方法忽略/不忽略跟蹤文件中的更改。
git update-index --assume-unchanged <file>
git update-index --no-assume-unchanged <file>
在目錄.git所在的目錄中創建一個.gitignore文件。 您可以列出其中的文件,並用換行符分隔。 您還可以使用通配符:
*.o
.*.swp
來自官方 GitHub 站點:
如果您已經簽入了一個文件,並且您想忽略它,那么如果您稍后添加規則,Git 將不會忽略該文件。 在這些情況下,您必須先取消跟蹤文件,方法是在終端中運行以下命令:
git rm --cached FILENAME
或者
git rm --cached .
git rm -r --cached .
git add .
你應該寫類似
*.class
進入你的.gitignore
文件。
將要忽略的文件添加到文件.gitignore
:
*。班級
*.項目
*.prefs
*。項目
如果你已經提交了文件並且你試圖通過添加到.gitignore
文件來忽略它,Git 不會忽略它。 為此,您首先必須執行以下操作:
git rm --cached FILENAME
如果您剛開始項目並且想要將一些文件添加到 Git 忽略,請按照以下步驟創建 Git 忽略文件:
.gitignore
文件。首先創建一個.gitignore文件,我們必須在其中存儲要忽略的文件和目錄的名稱。
忽略目錄;
name_of_directory/
忽略文件;
name_of_file
我們不需要提供要忽略的文件或目錄的完整路徑; 我們只需要提供它的名字。
如果您想忽略所有具有相同擴展名的文件;
*.pyc #will ignore all files with pyc extention
此外,上述內容僅在您尚未將文件添加到 Git 時才第一次起作用。 但是,如果我的錯誤是您將文件添加到 Git,而現在您希望在其余提交中忽略該文件,則需要首先通過運行此命令清除有關該文件的 Git 緩存;
git rm -r --cached <path_of_the_file>
其余的都是一樣的,即在.gitignore文件中添加名稱。
通過創建 .gitignore 文件。 有關詳細信息,請參見此處: Git Book - 忽略文件
利用:
git reset filename
git rm --cached filename
然后添加您要忽略的文件。 然后提交並推送到您的存儲庫。
我試過這個 -
列出我們要忽略的文件
git status .idea/xyz.xml .idea/pqr.iml Output .DS_Store
復制第 1 步的內容並將其附加到.gitignore文件中。
echo " .idea/xyz.xml .idea/pqr.iml Output .DS_Store" >> .gitignore
證實
git status .gitignore
同樣,我們可以使用directoryname/*
添加一個目錄及其所有要在 Git 狀態中忽略的子目錄和文件。 我從src
目錄執行了這個命令。
您還可以使用 .gitattributes(而不是 .gitignore)來排除整個文件類型。 該文件非常不言自明,但我將內容粘貼在這里以供參考。 注意最后一行(*.class binary):
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.mo binary
*.pdf binary
*.phar binary
*.class binary
我對文件“dump.rdb”有類似的問題。
我嘗試以各種方式將此文件添加到 .gitignore 文件中,但只有一種方式有效。
在 .gitignore 文件的末尾添加您的文件名
注意:將文件添加到其他任何地方都不起作用。
例如,參見: https ://gitlab.com/gitlab-org/gitlab-ce/raw/b3ad3f202478dd88a3cfe4461703bc3df1019f90/.gitignore
將以下行添加到 .git/info/exclude:
同學們好
使用.gitignore
時,此網頁可能有用且省時。
它會自動為不同的 IDE 和操作系統生成 .gitignore 文件,其中包含您通常不想拉入 Git 存儲庫的特定文件/文件夾(例如,特定於 IDE 的文件夾和配置文件)。
如果之前將任何文件添加到 Git,則刪除該文件並將該文件添加到.gitignore中。
示例:如果無法忽略在添加 spm 依賴項期間生成的package.resolved文件。
我在.gitignore文件中添加了以下幾行:
Packages/
Package.pins
Package.resolved
*.xcworkspace
並刪除了package.resolved文件。 現在 Git 開始忽略我的package.resolved文件。
如果要忽略已簽入的文件,則必須在添加規則以忽略它之前取消跟蹤該文件:
git rm --cached FILENAME
現在提交更改並將文件路徑添加到.gitignore文件。
我已經嘗試過--assume-unchanged
和.gitignore
但都沒有奏效。 它們使切換分支變得困難,並且難以合並來自其他分支的更改。 這是我的解決方案:
當我提交時,我從更改列表中手動刪除文件
在我拉之前,我存儲了更改的文件。 拉后,我做了一個stash pop 。
第 3 步有時會觸發合並,並可能導致您需要解決的沖突,這是一件好事。
這使我可以保留不與團隊中的其他人共享的本地更改。
您也可以使用例如Sourcetree並在添加到分支並已修改的文件上按 ppm,然后選擇“停止跟蹤”。 該文件現在將用問號圖標指定,當您再次 ppm 訪問該文件時,您現在可以選擇“忽略”。 這將通過其相對路徑將此特定文件添加到gitgnore 。
直接來自 Atlassian: .gitignore
如果您想忽略過去提交的文件,則需要從存儲庫中刪除該文件,然后為其添加.gitignore規則。
將--cached
選項與git rm
一起使用意味着該文件將從您的存儲庫中刪除,但它將作為一個被忽略的文件保留在您的工作目錄中。
您的工作目錄中應該仍然有該文件,但它無法推送到您的遠程存儲庫,除非您強制它。
您可能遇到的一種情況是.gitignore不會忽略您之前提交的文件。 您應該首先從存儲庫中刪除或移動這些文件,提交您剛剛所做的更改,然后將“*.class”添加到.gitignore 。
要從 GIT 中刪除已提交/暫存的文件git rm --cached <file_name>
將以下行添加到文件.gitignore
: /<file_name>
如果要從 Git 中排除所有類文件,請將以下行添加到.gitignore
: *<file_extension>
如果您想忽略某些文件,請按照以下步驟操作
如果您在目錄中沒有看到 .git 文件夾,請在文件資源管理器視圖面板中選中隱藏項目字段。
對於已編譯的代碼,只需編寫:
.class or .o
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.