Gitの管理対象から特定のファイルを外す

2022/08/17

gitの管理対象外にしたいファイルは .gitignore というファイルに記述します。

しかし開発途中で管理対象から外したいファイルが出てきた場合、.gitignore に追記するだけでは足りません。

ワークディレクトリに残ったままになってしまうのです。

今回はそんなケースについての対応をエントリーします。

未追跡ファイル(ステージエリアに追加していないファイル)は.gitignore に記述したらgit statusで即座に表示されなくなります。

 

やりたいこと

訳あってローカルとサーバーのPHPのバージョンが違う

composer.jsoncomposer.lock のファイルはgitの対象ファイルから外したい。

→ gitignoreに追記したのにワークディレクトリには常に表示されて鬱陶しい。

 

作業手順

.gitignoreに記述してgit push

git の管理対象外にしたいファイルを.gitignoreに記述します。

記述したらgit pushでリモートリポジトリにも送ります。

次にSSHでサーバーにアクセスしてgit pullをして同期をとります。

 

ファイルを指定してキャッシュを削除

サーバー側から以下のコマンドを実行します。


# ファイルを指定してキャッシュ削除
git rm --cached composer.json
git rm --cached composer.lock

# ディレクトリを指定してキャッシュ削除
git rm -r --cached data/cache/

git commit -m "untrack files"
git push

 

ポイント

ローカルにある composer.json と composer.lock は削除されません。

 

git pull 実行

git pullを実行してコンフリクトを起こした場合、スタッシュを実行してプルします。


$ git stash save "2019-09-03"
$ git pull

$ git stash apply

 

 

手作業で削除されたファイルを元に戻す

このままだと次に何かコミットするときに怒られるので消します。


$ git rm composer.json
$ git rm composer.lock

 

次にバックアップしていたcomposer.jsonとcomposer.lockを手動で元に戻します。

これでgit statusを実行してもワークディレクトリに表示されません。

とても正攻法と呼べるやり方ではありませんが。。(汗)

 
以上です。

Git おススメ教材(by Udemy)
動画でプログラミング学習!ドットインストール、Schoo、Udemyのどれがいい?
 
Udemyを使ったLaravel学習方法

Git: もう怖くないGit!チーム開発で必要なGitを完全マスター

Gitの基本コマンド、ブランチやマージ、コンフリクトの解消方法、リベース、GitHubを利用した開発フローなど、チーム開発に必要なGitの全てが含まれています。仕組みを図解で理解した上でハンズオンで実践するので、もうGitは怖くありません。
4.2(6409)

 

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-環境構築