【.gitignore】:這個忽略文件會上傳到遠程倉庫,會使所有人都按照這個文件規則忽略文件
【.git/info/exclude】:這個會關閉文件與遠程倉庫的跟蹤,認爲這個文件遠程倉庫是不會修改,所以每次pull都是本地的文件
【assume-unchanged】:這個會關閉文件與遠程倉庫的跟蹤,認爲這個文件遠程倉庫是不會修改,所以每次pull都是本地的文件
【skip-worktree】:這個不會關閉文件與遠程倉庫的跟蹤,只是告訴Git不要跟蹤對本地文件/文件夾的更改,每次pull時會拉取最新的變化會提示衝突,但因爲沒有跟蹤本地更改,所以需要no-skip-worktree再合併最新的變化
以上在commit時都會忽略文件
附:
【skip-worktree】常用命令:
【skip-worktree】標記一個文件
git update-index --skip-worktree project-1.yml
git update-index --skip-worktree project-2.yml
獲取被【skpi-worktree】標記的文件
git ls-files -v | grep -i "^S"
取消單個文件【skip-worktree】標記
git update-index --no-skip-worktree project-1.yml
git update-index --no-skip-worktree project-2.yml
批量取消文件【skip-worktree】標記
git ls-files -v | grep -i "^S" | cut -c 3- | tr '\012' '\000' | xargs -0 git
update-index --no-skip-worktree
批量取消代碼解析:
git ls-files -v
顯示所有文件的狀態
grep -i ^S cut -c 3-
提取從第三個字符開始到結尾,去掉狀態只保留路徑
tr ‘\012’ ‘\000’
替換換行符 (\012) 爲 (\000)
xargs -0 git update-index --no-skip-worktree
把以0分割的路徑字符傳給 git update-index --no-skip-worktree 取消
【assume-unchanged】常用命令
【assume-unchanged】標記一個文件
git update-index --assume-unchanged project-1.yml
git update-index --assume-unchanged project-2.yml
獲取被【assume-unchanged】標記的文件
git ls-files -v | grep -I "^h"
取消單個文件【assume-unchanged】標記
git update-index --no-assume-unchanged project-1.yml
git update-index --no-assume-unchanged project-2.yml
批量取消文件【assume-unchanged】標記
git ls-files -v | grep -I "^h" | cut -c 3- | tr '\012' '\000' | xargs -0 git
update-index --no-assume-unchanged