ソース管理と「.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」を修正・コミット・プッシュ
・移動させていたファイルを元の場所に戻す