簡體   English   中英

如何忽略Git中的某些文件

[英]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

在 Windows 上

  1. 創建一個.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

如果存儲庫已經存在,那么您必須執行以下操作:

  1. git rm -r --cached .
  2. git add .
  3. 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>

您可以使用以下方法忽略/不忽略跟蹤文件中的更改。

  1. 忽略: git update-index --assume-unchanged <file>
  2. 恢復被忽略的文件: git update-index --no-assume-unchanged <file>

在目錄.git所在的目錄中創建一個.gitignore文件。 您可以列出其中的文件,並用換行符分隔。 您還可以使用通配符:

*.o
.*.swp

來自官方 GitHub 站點:

如果您已經簽入了一個文件,並且您想忽略它,那么如果您稍后添加規則,Git 將不會忽略該文件。 在這些情況下,您必須先取消跟蹤文件,方法是在終端中運行以下命令:

git rm --cached FILENAME

或者

git rm --cached .
  1. 轉到 .gitignore 文件並添加要忽略的文件的條目
  2. 運行git rm -r --cached .
  3. 現在運行git add .

你應該寫類似

*.class

進入你的.gitignore文件。

將要忽略的文件添加到文件.gitignore

*。班級

*.項目

*.prefs

*。項目

如果你已經提交了文件並且你試圖通過添加到.gitignore文件來忽略它,Git 不會忽略它。 為此,您首先必須執行以下操作:

git rm --cached FILENAME

如果您剛開始項目並且想要將一些文件添加到 Git 忽略,請按照以下步驟創建 Git 忽略文件:

  1. 導航到您的 Git 存儲庫。
  2. 輸入“touch .gitignore”,這將創建一個.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 在不使用 .gitignore 的情況下忽略文件?

利用:

git reset filename
git rm --cached filename

然后添加您要忽略的文件。 然后提交並推送到您的存儲庫。

我試過這個 -

  1. 列出我們要忽略的文件

    git status .idea/xyz.xml .idea/pqr.iml Output .DS_Store

  2. 復制第 1 步的內容並將其附加到.gitignore文件中。

    echo " .idea/xyz.xml .idea/pqr.iml Output .DS_Store" >> .gitignore

  3. 證實

    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

  1. 混帳藏匿
  2. git 拉
  3. git stash 彈出

第 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>

如果您想忽略某些文件,請按照以下步驟操作

  1. 進入位於工作目錄中的 .git 文件夾。
  2. 進入“信息”文件夾。
  3. 你會發現一個名為“exclude”的文件。
  4. 將要忽略的文件名添加到此文件中。

如果您在目錄中沒有看到 .git 文件夾,請在文件資源管理器視圖面板中選中隱藏項目字段。

對於已編譯的代碼,只需編寫:

.class or .o

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM