パスワードが入ったファイルや、本番・テスト環境によってパラメータが違うけれども同じファイル名で保存しないといけないファイルがあったとします。
Git で管理しているものの、間違ってブランチ同士をマージした時にファイルを上書きしてしまうかもしれません。
そんなときは、ローカル・サーバー上でファイルを残しつつ git レポジトリからだけファイルやディレクトリを削除したい場合の方法です。
つまり git rm --cached
の説明です。
(実施する回数がレアで、いつも忘れちゃう・・・。)
ステップ解説
STEP 1. gitignore ファイルに対象のファイルを追加する
ローカル・サーバー上にはずっと残しておきたいので、該当するファイルやフォルダを gitignore に追加します。
cd [git レポジトリの場所]
vi .gitignore
STEP 2. git rm -cached コマンドで git レポからは削除する
--cached オプションを加えることで、git レポジトリだけに反映されます。
git rm --cached [ファイル]
git rm --cached -r [ディレクトリ]
あとは普通にコミット & プッシュします
git commit -m "メッセージ"
git push [リモート名] [ブランチ名]
おまけ
僕の作業用の手順書をここにおいておきます。
僕のコピペ用です。
通常、この作業をするときは、サーバー上での話なので、直接サーバーから作業します。
入れないといけない、メールアドレス、ファイル名、git commit メッセージ、push のときのブランチ名などは 省いています 。
サーバー上で Apache ユーザーとして行う場合
# サーバーからは初コミットかもしれないので、ユーザーを設定する
sudo -u apache git config --global user.name "Nginx User"
## メールアドレスを設定する
sudo -u nginx git config --global user.email nginx@
# git の場所
cd
# クリーンなレポジトリか確認する
sudo -u apache git status
# .gitignore編集
sudo -u apache vi .gitignore
# 削除ファイルを入れる
sudo -u apache git rm --cached
# 削除ディレクトリを入れる
sudo -u apache git rm --cached -r
# コミットメッセージをいれる
sudo -u apache git commit -m ""
# ブランチ名をいれる
sudo -u apache git push origin
サーバー上で Nginx ユーザーとして行う場合
# サーバーからは初コミットかもしれないので、ユーザーを設定する
sudo -u nginx git config --global user.name "Apache User"
## メールアドレスを設定する
sudo -u nginx git config --global user.email apache@
# git の場所
cd
# クリーンなレポジトリか確認する
sudo -u nginx git status
# .gitignore編集
sudo -u nginx vi .gitignore
# 削除ファイルを入れる
sudo -u nginx git rm --cached
# 削除ディレクトリを入れる
sudo -u nginx git rm --cached -r
# コミットメッセージをいれる
sudo -u nginx git commit -m ""
# ブランチ名をいれる
sudo -u nginx git push origin
以上