1. 程式人生 > >解決 .gitignore無效,不能過濾某些檔案

解決 .gitignore無效,不能過濾某些檔案

剛開始新建一個專案可能會把.idea/workspace.xml等這種系統檔案或編譯中間過程的檔案都用git add新增到了git版本庫中來管理,這樣即使後來添加了.gitignore檔案也不能忽略掉已經新增到版本庫中的檔案,這時需要用 git rm --cache xxx檔案 再在.gitignore中新增該檔案從而實現了對該檔案的忽略。。。(.gitignore 與 .git新增到同一級目錄即可)

gen  和bin 資料夾下的檔案是編譯生成的,最好不要加到版本管理中,最好加入到.gitignore檔案中(這兩個資料夾要留,只是把資料夾下的檔案移除版本管理庫)

可是,我已經加入到了版本管理中,怎麼辦?
一般來說,使用“git rm”命令

// 下面就以刪除bin資料夾為例子,刪除gen等檔案,也是一樣的道理,以此類推
1.剛開始 使用的是 git rm -r -n */gengen”)
引數解釋:-r  遞迴移除目錄,(Allow recursive removal when aleading directory name is given.)
  -n:加上這個引數,執行命令時,是不會刪除任何檔案,而是展示此命令要刪除的檔案列表預覽,所以一般用這個引數先看看要刪除哪些檔案,防止誤刪,確認之後,就去掉此引數,真正的刪除檔案。 (Don't actually remove any file(s). Instead, just show if theyexist in the index and would otherwise be
          removed by the command.)

但是上面的命令真正會刪除檔案,我覺得,我需要的只是從版本管理庫中刪除,不再跟蹤此檔案,而硬碟上的這個檔案還是要的,所以,上面的命令還要增加引數來實現此目的。

引用:

\******************開始***************\

 我們想把檔案從 Git倉庫中刪除(亦即從暫存區域移除),但仍然希 望保留在當前工作目錄中。換句話說,僅是從跟蹤清單中刪除。比如一些大型日誌檔案或者 一堆.a 編譯檔案,不小心納入倉庫後,要移除跟蹤但不刪除檔案,以便稍後在 .gitignore 檔案中補上,用 --cached選項即可:

\******************結束***************\
 
2.按照上面的引用,我修改的命令如下:
 git rm  -r -n--cached   */bin
 git rm *~ (只刪除當前目錄下以“
~”結尾的檔案)
注意到星號 * 之前的反斜槓 \,因為 Git 有它自己的檔案模式擴充套件匹配方式,所以我們 不用shell 來幫忙展開(譯註:實際上不加反斜槓也可以執行,只不過按照 shell 擴充套件的話,僅僅刪除指定目錄下的檔案而不會遞迴匹配。上面的例子本來就指定了目錄,所以效果等同,但下面的例子就會用遞迴方式匹配,所以必須加反斜槓。)。此命令刪除所有 log/ 目錄下副檔名為 .log的檔案。類似的比如:
 git rm \*~ (會遞迴的刪除當前目錄 以及 子目錄下的
以“~”結尾的檔案
會遞迴刪除當前目錄及其子目錄中所有 ~ 結尾的檔案。


所以我最後的命令是
gitrm  -r -n--cached  */bin
/\* (注意:此命令會真正刪除檔案,你可以加上"-n"引數 檢視檔案列表)

3.刪除gen資料夾 只要把上面的“bin”改為“gen”即可
4.把這倆資料夾移除版本管理,但是
有問題了,就是
在你執行 “git status”檢視當前狀態,會發現 gen和bin資料夾下的檔案會出現,提示沒有在版本管理裡面
這就很煩人,我們既想把gen和bin移除版本管理庫,
但是這樣的提示,會耽誤我們的“git add”命令,也會干擾我們使用“git status”的
結果列表
我們想忽略這倆資料夾,

我參考了下面的連線
http://stackoverflow.com/questions/3325736/eclipse-android-and-gitignore

我們可以在與 “.git”資料夾同級目錄下建立“.gitignore”檔案,就是這倆檔案在同一個目錄下
“.gitignore”檔案裡面的內容就是 我們要忽略的檔案,這些檔案即使不在版本管理庫,也不會提示的
檔案內容如下:

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Eclipse project files
#.classpath
#.project

# Proguard folder generated by Eclipse
proguard/

# Intellij project files
*.iml
*.ipr
*.iws
.idea/


上面這些檔案就被忽略。
原文是刪除了“.classpath”和“.project”,我不建議這樣做,這兩個檔案還是留在版本管理庫,否則,你把專案匯出到別的地方,再匯入時就會有問題。

記得

參考如下:

\******************開始***************\
 
一般我們總會有些檔案無需納入 Git 的管理,也不希望它們總出現在未跟蹤檔案列表。通常都是些自動生成的檔案,像是日誌或者編譯過程中建立的等等。我們可以建立一個名為 .gitignore的檔案,列出要忽略的檔案模式,來看一個簡單的例子:

$ cat .gitignore *.[oa]
*~

第一行告訴 Git 忽略所有以 .o 或 .a 結尾的檔案。一般這類物件檔案和存檔檔案都是編譯過程中出現的,我們用不著跟蹤它們的版本。第二行告訴 Git 忽略所有以波浪符(~) 結尾的檔案,許多文字編輯軟體(比如Emacs)都用這樣的檔名儲存副本。此外,你可能 還需要忽略 log,tmp 或者 pid目錄,以及自動生成的文件等等。要養成一開始就設定好 .gitignore 檔案的習慣,以免將來誤提交這類無用的檔案。
檔案 .gitignore 的格式規範如下:
• 所有空行或者以註釋符號 # 開頭的行都會被 Git 忽略。
• 可以使用標準的 glob 模式匹配。
• 匹配模式最後跟反斜槓(/)說明要忽略的是目錄。
• 要忽略指定模式以外的檔案或目錄,可以在模式前加上驚歎號(!)取反。
所謂的 glob 模式是指 shell 所使用的簡化了的正則表示式。星號(*)匹配零個或多個任 意字元;[abc]匹配任何一個列在方括號中的字元(這個例子要麼匹配一個 a,要麼匹配一 個 b,要麼匹配一個c);問號(?)只匹配一個任意字元;如果在方括號中使用短劃線分 隔兩個字元,表示所有在這兩個字元範圍內的都可以匹配(比如 [0-9]表示匹配所有 0 到 9 的數字)。
我們再看一個 .gitignore 檔案的例子:

# 此為註釋 – 將被 Git 忽略
*.a # 忽略所有 .a 結尾的檔案
!lib.a # 但 lib.a 除外
/TODO # 僅僅忽略專案根目錄下的 TODO 檔案,不包括 subdir/TODO build/ # 忽略 build/目錄下的所有檔案
doc

\******************結束***************\

如果做完上面的設定後,出現編譯錯誤,課按照下面的方法解決

With regards to the error, I wouldclean the project and/or try to run the Fix ProjectProperties utility (right-click on the Project-> Android Tools -> Fix ProjectProperties).


這裡推薦一個學習git 的入門帖子:寫的還不錯
http://www.nshen.net/sitelog/2011/08/03/git-note.html

相關推薦

解決 .gitignore無效不能過濾某些檔案

剛開始新建一個專案可能會把.idea/workspace.xml等這種系統檔案或編譯中間過程的檔案都用git add新增到了git版本庫中來管理,這樣即使後來添加了.gitignore檔案也不能忽

.gitignore無效不能過濾某些檔案

利用.gitignore過濾檔案,如編譯過程中的中間檔案,等等,這些檔案不需要被追蹤管理。 現象: 在.gitignore新增file1檔案,以過濾該檔案,但是通過git status檢視仍顯示file1檔案的狀態。 原因: 在git庫中已存在了這個檔案,之前push提交過

Shell中過濾某些檔案不刪的小tips

有時候某一目錄下,需要保留某些檔案或目錄不刪,其餘的都刪除,可以使用下面的語句 [[email protected] ~]# touch file{1..10} [[email protected] ~]# mkdir -p D1/D2/D3 [[email p

如何解決 Mongodb後在cmd下無法啟動,提示:服務名無效發生系統錯誤2 系統找不到指定的檔案

1.電腦是64位,作業系統win0 2.下載的是mongodb3.4版本 3.安裝包直接安裝, 預設安裝在c:\program files\mongoDB, 手工建立目錄c:\program files\mongodb\service\3.4\data\db 4.安裝完成,新增路

iOS工程配置git忽略檔案(.gitignore) .gitignore無效解決辦法

開啟終端cd到本地倉庫,和.git同層(檢視隱藏檔案) $ cd project $ ls -a 複製程式碼 建立.gitignore檔案 $ vim .gitignore 複製程式碼 鍵入 "i",看到下面這個,進入編輯模式 -- INSERT -- 複製程式碼 把

phpexcel匯出excel無法開啟提示檔案格式或檔名無效檔案損毀解決辦法

使用過很多次phpexcel了,有時需要儲存檔案到磁碟,有時需要瀏覽器彈出下載。儲存到磁碟一半不會出現問題,關鍵是瀏覽器彈出儲存,經常會發生匯出的excel檔案無法開啟,提示檔案格式或檔名無效,檔案損毀。在此,記錄一下解決辦法。 1、xls還是xlsx?首先確定匯出的excel副檔名 2、新

kindeditor官網異步加載示例無效解決無法通過方法初始化編輯器

har cdd kxml yep adf tr1 ket 沒有效果 iba 官網示例:http://kindeditor.net/ke4/examples/dynamic-load.html 項目中發現一個問題,kindeditor官網是通過 初始化編輯器,但是現在有

IntelliJ IDEA 的 .idea 目錄加入.gitignore無效解決方法

question inf reat tac ear tell log demo dea [轉載] 無效的原因是:對應的目錄或者文件已經被git跟蹤,此時再加入.gitignore後就無效了, 解決辦法: 先執行 [文件夾] git rm -r --cached

解決-Django使用filter過濾時間無法獲取月份的問題

日期查詢 處理 技術 family django res mona [] 時報 django中的filter日期查詢屬性有:year、month、day、week_day、hour、minute、second 但是但我在使用過濾查詢是卻總是無法過濾出月份,各種查資料,最後才

C# .net 填充無效無法被移除 微信小程序解密失敗的解決辦法

odi 獲取用戶信息 親測 字符串 nload form 由於 無效 ted 微信小程序獲取用戶信息諸如unionId的時候需要解密,如果遇到偶然的解密失敗(填充無效,無法被移除),原因很有可能是session_key錯誤, 也是就你用作解密的session_key並不是微

[ADB]解決adb push只讀檔案系統Read-only file system問題

解決方法 因命令2、adb disable-verity,需要新版adb工具才有,可以從以下連結下載使用 paltform adb 執行命令如下: adb root 獲取root許可權 adb disable-verity 關閉 system 分割槽的 verit

建立的maven專案pom.xml檔案報錯解決方法

eclipse建立的maven專案,pom.xml檔案報錯解決方法 【錯誤原因一:】maven 編譯級別過低 【解決辦法:】 使用 maven-compiler-plugin 將 maven 編譯級別改為 jdk1.6 以上: <!-- java編譯外掛

執行緒間操作無效: 從不是建立控制元件“XXX”的執行緒訪問它 [Winform]執行緒間操作無效從不是建立控制元件的執行緒訪問它的幾個解決方案async和await?

方法1  Invoke((MethodInvoker)(()=>{XXX.Text = message;}));   方法2 取消跨執行緒檢查 Control.CheckForIllegalCrossThreadCalls = false;  

解決IIS中無法執行aspx檔案提示:伺服器應用程式不可用

引起這個的原因大概是現安裝了.Net Framework後裝的IIS導致.Net沒有在IIS裡註冊。 從.net命令列工具裡執行 aspnet_regIIS /i 就可以了(或者在類似下面的目錄:C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/asp

git忽略某些檔案(.gitignore的配置語法)

很多時候我們不希望某一類檔案被git自動新增,也不希望這類檔案出現在git的未跟蹤列表中。尤其是在git status命令中輸出一大堆無關的檔案。git支援我們自定義忽略某些檔案的,git status也會變的跟清爽 我們需要在專案中與.git資料夾的同級目錄下建立一個.gitignore檔案(注

ubuntu 掛載硬碟時只能讀取檔案不能寫入的解決辦法

最近用自己的硬碟當做儲存工具,突然發生了問題,就是隻能看硬盤裡的資料卻無法修改或者複製內容,查了好多辦法都不行,最後看到我掛載硬碟時,硬碟資料夾出現×號,這才想起來可能由於許可權問題,被設定為只讀模式,所以解決辦法自然就是給許可權啊: 1    pwd檢視硬碟的

VScode編譯C++標頭檔案顯示not found的解決方法

一直用codeblocks,想試試vscode,結果這個問題給我弄懵逼了。一開始以為是iostream這個標頭檔案not found,後來發現第一個標頭檔案都會這樣顯示,放到後面就不會了,然而,光這一個顯示not found(雖然並不影響編譯),就能逼死強迫症的啊~~~ 言歸正傳,這個問題解

Java基礎——解決JFrame.setBackground設定無效mac系統IDEA編譯器

原理: JFrame框架,一旦建立,在其中就已經包含一個內容面板。 一般我們在往JFrame中新增元件時,都加在了內容面板中,這個面板可以通過JFrame的成員方法getContentPane()取出來,所以如果設定JFrame的背景顏色,仍然會被內容面板蓋住,不如設定內容面板的背景顏色,如

【人生苦短我用python!】幾行python處理檔案裡面的重複內容(包括了讀寫檔案過濾重複!)

The beauty of python 1 https://blog.csdn.net/dengyaolongacmblog/article/details/38016905 置頂 2014年07月21日 15:28:18 yaolongdeng 閱讀數:2189 標籤:

UBUNTU安裝CUDA 9.2提示缺少檔案解決辦法

驅動要先安裝好,396。參考之前的安裝文章。 先安裝一些檔案,否則會提示缺少檔案。 sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-