Git 提供了四種方法來忽略文件,分別適用不同情況,如下:
1、全局忽略
忽略規則由本機所有倉庫共用,配置方法如下:
編輯 ~/.gitconfig
文件,
[user] name = yourname email = yourname@email.com [gui] encoding = utf-8 [core] excludesfile = ~/.gitignore
最后兩行是新增的,用戶設置全局忽略的配置文件目錄,本例子是存放於 ~/.gitignore
下,可以改成其他路徑。
或通過命令行添加配置:
git config --global core.excludefile ~/.gitignore
2、單個倉庫下忽略(遠程共用)
單個倉庫下忽略,同時同步該設置至遠程倉庫,與其他克隆倉庫共用;這個方法也是最常用的,配置方法是在倉庫的根目錄下新建 .gitignore
文件,在文件里配置忽略規則,同時把 .gitignore
文件加入版本管理。
比如:
# phpstorm project files .idea .tags .tags_sorted_by_file
3、單個倉庫下忽略(本機使用)
單個倉庫下忽略,不會同步該設置至遠程倉庫,只在本機起作用;配置方法是直接編輯倉庫根目錄下的.git/info/exclude
文件,把要忽略的規則直接寫入,這個方法只在本機當前倉庫起效,不會對其他的克隆倉庫起效。
配置文件規則參考 中文文檔。
比如:
# git ls-files --others --exclude-from=.git/info/exclude # Lines that start with '#' are comments. # For a project mostly in C, the following would be a good set of # exclude patterns (uncomment them if you want to use them): # *.[oa] # *~ read.md
4、忽略已跟蹤文件的改動(本機使用)
上訴1,2,3方案都是適用於未跟蹤的文件改動,而對於已跟蹤文件的改動並不適用,好在針對這種情況 Git 也提供了我們方法去忽略。
#忽略跟蹤(提交代碼時,忽略某一個文件不提交,即某個文件不被版本控制) git update-index --assume-unchanged FLIE #FILE是目標文件路徑 #恢復跟蹤 git update-index --no-assume-unchanged FLIE #FILE是目標文件路徑
不過如果執行 git checkout
和git reset
的時候仍然會影響到這些文件,並把內容恢復到被跟蹤的內容(再次修改仍然不會被跟蹤)。
如果忽略的文件多了,可以使用以下命令查看忽略列表
git uls-files -v | grep '^h\ '
提取文件路徑,方法如下
git ls-files -v | grep '^h\ ' | awk '{print $2}'
所有被忽略的文件,取消忽略的方法,如下
git ls-files -v | grep '^h' | awk '{print $2}' |xargs git update-index --no-assume-unchanged
更多update-index 參考:https://www.cnblogs.com/wt645631686/p/10007328.html