ソース管理と「.gitignore」とソース
ローカルリポジトリで修正したけど、リモートリポジトリに送りたくないファイルの対応
作成日:2019-06-28, 更新日:2019-06-28
基本:例えば「ignore.php」というファイルを監視したくない
調べると色々と言われているし・・・言葉を省略されていたりと面倒。
「ignore.php」というファイルが無いとき
▼条件
・リモートリポジトリに「ignore.php」が存在しない
・ローカルリポジトリに「ignore.php」が存在しない
▼ローカルリポジトリで作業
・「.gitignore」に「ignore.php」を指定
・ローカルリポジトリに「ignore.php」を追加
→コミット、プッシュの対象にならない
「ignore.php」というファイルがあるとき1
▼条件
・リモートリポジトリに「ignore.php」が存在する
・ローカルリポジトリに「ignore.php」が存在する
▼ローカルリポジトリで作業
・「.gitignore」に「ignore.php」を指定
・ローカルリポジトリで「ignore.php」を修正
→コミット、プッシュの対象になる
→リモートリポジトリに反映される
「ignore.php」というファイルがあるとき2
▼条件
・リモートリポジトリに「ignore.php」が存在する
・ローカルリポジトリに「ignore.php」が存在する
▼ローカルリポジトリで作業
・「.gitignore」に「ignore.php」を指定
・ローカルリポジトリで「ignore.php」を修正
・ローカルリポジトリで「ignore.php」をインデックスから削除(ファイルは残す)
→コミット、プッシュの対象になる
→リモートリポジトリから「ignore.php」が削除(ローカルリポジトリのファイルは残る)
■このあと、リモートリポジトリからプル(ダウンロード)した場合
・『「ignore.php」を削除』という情報を元に「ローカルリポジトリ」から「ignore.php」が削除される
※リモートリポジトリから「ignore.php」をインデックスから削除すれば良いような気もするが・・・未調査
「ignore.php」というファイルがあるときの対策
複数人の場合は、情報共有が重要。
▼条件
・リモートリポジトリに「ignore.php」が存在する
・ローカルリポジトリに「ignore.php」が存在する
初回
▼ローカルリポジトリで作業
・「.gitignore」に「ignore.php」を指定
・ローカルリポジトリで「ignore.php」を修正
・ローカルリポジトリで「ignore.php」をインデックスから削除(ファイルは残す)
・ローカルリポジトリで「ignore.php」を複製して「ignore.php.sample」を用意
→コミット、プッシュ(リモートリポジトリから「ignore.php」が消え「ignore.php.sample」が増える)
2回目
・リモートリポジトリからプル(ダウンロード)
・ローカルリポジトリで「ignore.php」が削除
・ローカルリポジトリで「ignore.php.sample」が増える
・ローカルリポジトリで「ignore.php.sample」を複製して「ignore.php」を作る
→「ignore.php」はコミット、プッシュの対象にならない
3回目
・リモートリポジトリからプル(ダウンロード)
・ローカルリポジトリの「ignore.php」は何も影響無し。修正してもコミット、プッシュの対象にならない
インデックスから削除(ファイルは残す)する方法
※Sourcetree:ターミナルから。Sourcetreeを使わない場合は知らない。
▼構文
$ git rm --cached ファイル
▼「ignore.php」を対象にする場合
$ git rm --cached ignore.php
▼単純にファイルを関係ないトコに移動させてから、コミット・プッシュ。その後、元に戻せば大丈夫だったりする。
・ファイルを関係ないトコに移動
・「.gitignore」を修正・コミット・プッシュ
・移動させていたファイルを元の場所に戻す