◾️事象
gitignoreに指定したファイルを'git rm --cached'コマンドで削除した際、ローカル環境からもファイルが消える。
◾️詳細について
もともとGitHub対象だったファイルを途中からgitignoreに追加して、管理対象外としました。
その際、リモートのリポジトリからもファイルを削除するため、下記のコマンドを実行しました。
git rm --cached ファイル名
その後、いつの間にか指定したファイルがローカル環境から消えており、
後日、ローカル環境、本番環境(AWS/EC2)共に起動しなくなり、事象が発覚した。
◾️再現できる手順
環境:MacBook Air(iOS10.14)/Github/GitHubDesktop/ターミナル/Visual Studio Code/rails5.2.1
①GitHubDesktopでmasterから、新しくブランチをきる。
②GitHubDesktopを新しいブランチに切り替える。
③ローカル環境でVisualStudioCodeを使いgitignoreに対象のファイルパスを記述。
GitHubDesktopでコミット&プッシュする。
(ちなみに事象発生はconfig/secrets.yml)
④ローカルターミナルから「git rm --cashed ファイル名」を実行する。
⑤GitHubDesktopを開くと、rm対象のdeleteコミットが自動で出てくるので更にコミット&プッシュ。
⑥新しくきったブランチに対し、GitHubDesktopからプルリクしてmasterにマージをかける。
(この時点でGitHubのリモートリポジトリからgitignore対象のファイルが消える)
⑦GitHubDesktopでFetch originを実行する。
⑧GitHubDesktopでローカル環境に差異があるため、pull originを求められるため、実行する。
⑨ローカル環境からgitignoreで指定したファイルが消える。
◾️疑問点
gitrm時、オプションとして--cachedを選んでいるためローカルからは消えないと思っていたのですが、何故この動きなのでしょうか?純粋にmaster上で対象ファイルがdeleteされたと言うcommitのみ解釈しているのでしょうか?
ですが、そもそもgitignoreはマージした時点でmasterにも効いている訳ですから、削除ではなく無視するのが適切ではないかとも感じます。
なお、今回再現できる手順はこれですが、実際にはブランチを切らない状態でも消えてしまいました。。。
(再現手順不明・・・)
原理・原則が分かると気をつける事や、再現も可能かな?と思っています。
詳しい方、ご教示いただけると非常に嬉しいです。
拙い文章で非常に申し訳ありませんが、よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/19 07:33
2019/07/19 07:43
2019/07/19 08:27 編集