Help us understand the problem. What is going on with this article?

ディスクには残しつつ Git のレポジトリからはファイルやディレクトリを削除する方法

パスワードが入ったファイルや、本番・テスト環境によってパラメータが違うけれども同じファイル名で保存しないといけないファイルがあったとします。

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 

以上

参考
https://stackoverflow.com/questions/1143796/remove-a-file-from-a-git-repository-without-deleting-it-from-the-local-filesyste

katzueno
concrete5 Japan コミュニティリーダー。コンクリートファイブジャパン株式会社の CCO。YokosoNews で日本を英語で世界に発信。元々はロスでインディー映画制作やエンタメ雑誌の編集。
http://katzueno.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした