Skip to main content

Git管理下にあるファイルを管理外にして、かつそれらのファイルを.gitignoreに追加したい

.gitignoreファイルを編集

gitignore
.DS_Store
UserInterfaceState.xcuserstate

既存のファイルを管理外にする

この操作自体でファイルは消えない。

bash
git rm --cached
bash
find . -type f -name .DS_Store                      | xargs -n 1 git rm --cached
find . -type f -name UserInterfaceState.xcuserstate | xargs -n 1 git rm --cached

あとは add, commit, push

省略


まとめてやる版 - 既に commit までしてしまった場合 → rm --cached

(1) gitignore に入っているが その前に add + commit してしまったファイルを一覧する

bash
git ls-files -ci --exclude-standard

(2) それをまとめて index から削除

bash
git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached

この操作でファイル自体は消えない

(3) あとは add, commit, push


まとめてやる版 - add のみの場合 → restore --staged

(1) 一覧する

bash
git diff --cached --name-only --diff-filter=ACMR | git check-ignore --stdin

(2) stage から外す

bash
git diff --cached --name-only --diff-filter=ACMR | git check-ignore --stdin | xargs -r git restore --staged