2017年7月9日 星期日

[ Git 常見問題 ] Git 忽略規則及 .gitignore 規則不生效的解決辦法

Source From Here 
Question 
在 git 中如果想忽略掉某個文件,不讓這個文件提交到版本庫中,可以使用修改根目錄中 .gitignore 文件的方法(如無,則需自己手工建立此文件)。這個文件每一行保存了一個匹配的規則例如: 
  1. # 此为注释 – 将被 Git 忽略  
  2.   
  3. *.a       # 忽略所有 .a 结尾的文件  
  4. !lib.a    # 但 lib.a 除外  
  5. /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO  
  6. build/    # 忽略 build/ 目录下的所有文件  
  7. doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt  
規則很簡單,不做過多解釋,但是有時候在項目開發過程中,突然心血來潮想把某些目錄或文件加入忽略規則,按照上述方法定義後發現並未生效,原因是 .gitignore 只能忽略那些原來沒有被track的文件,如果某些文件已經被納入了版本管理中,則修改 .gitignore是無效的。那麼解決方法就是先把本地緩存刪除(改變成未track狀態),然後再提交. 

How-To 
// -r: Allow recursive removal when a leading directory name is given. 
// --cached: Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone.
 
# git rm -r --cached . 
# git add . 
# git commit -m 'update .gitignore'


沒有留言:

張貼留言

[ FP In Python ] Ch1. (Avoiding) Flow Control

Preface   In typical imperative Python programs—including those that make use of classes and methods to hold their imperative code—a block...