gitignore 忽略文件夾 不生效
有時候我們接手別人的項目時,發現有的忽略不對想要修改,但發現修改忽略.gitignore后無效。原因是如果某些文件已經被納入版本管理在.gitignore中忽略路徑是不起作用的,這時候需要先清除本地緩存,然后重新添加并提交。
解決辦法:
git rm -r --cached .
git add .
git commit -m ‘update .gitignore’
git push -u origin master
擴展出來講,Git所管理的文件分為以下幾種狀態:
- Untracked: 未跟蹤, 此文件在文件夾中, 但并沒有加入到git庫, 不參與版本控制. 通過git add 狀態變為Staged.
- Unmodify: 文件已經入庫, 未修改, 即版本庫中的文件快照內容與文件夾中完全一致. 這種類型的文件有兩種去處, 如果它被修改, 而變為Modified. 如果使用git rm移出版本庫, 則成為Untracked文件
- Modified: 文件已修改, 僅僅是修改, 并沒有進行其他的操作. 這個文件也有兩個去處, 通過git add可進入暫存staged狀態, 使用git checkout 則丟棄修改過, 返回到unmodify狀態, 這個git checkout即從庫中取出文件, 覆蓋當前修改
- Staged: 暫存狀態. 執行git commit則將修改同步到庫中, 這時庫中的文件和本地文件又變為一致, 文件為Unmodify狀態. 執行git reset HEAD filename取消暫存, 文件狀態為Modified
詳細參考:
https://www.cnblogs.com/thirteen-yang/p/13878118.html
github 提交大文件提示:git this exceeds GitHub’s file size limit of 100.00 MB
分兩種情況,一種是當前提交文件過大忽略該文件即可,另外一種情況是以前的提交記錄中存在大文件,那就需要如下指令:
git filter-branch -f --index-filter “git rm -rf --cached --ignore-unmatch rootfs/hdc-0.11.img” – --all
rootfs/hdc-0.11.img替換為文件過大的路徑。當然我們還可以適用Git LFS上傳大文件,但一般情況不建議該方案。