2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

既にGit で管理しているファイルと新しく追加したファイルをGit管理下から外す方法

Last updated at Posted at 2023-05-29

概要

チーム開発を行う際、個人の開発環境のみに追加したいファイルや既にgit管理下にあるファイルだが編集内容を個人のローカル環境のみに留めて置きたい場面があるかと思われます。この場合、よく使われる手法として、.gitignoreに書き込むやり方があると思います。ただ、.gitignoreに書き込むと他の開発者にも影響するので、チーム開発に於いては、良いやり方とは言えないです。
今回は、表題にも記載した様に、他の開発メンバーに影響を与えず、自身のローカル環境のみに修正内容を反映させる方法を記載します。

新規で追加したファイルをGit管理しない方法

  • .gitinfoディレクトリーを作成後、excludeファイルを作成する
  • excludeファイルにバージョン管理外にしたいファイルやディレクトリーを指定する

excludeファイルに記述する内容は、個人的なツールの設定、エディタの一時ファイル、ユーザ特有のビルド設定等を書き込む為に使用する

# .gitのディレクトー構成

.git/
├── FETCH_HEAD
├── objects
├── index
├── ORIG_HEAD
├── config
├── logs
├── refs
├── packed-refs
├── hooks
└── info/  # ⇦ infoディレクトリーを追加
    └── exclude # ⇦ excludeファイルを追加
  • excludファイルの書き方の例
# excludファイル

my-test-target.txt
aaa-test-target.txt
  • 上記の設定を行った事により、git statusコマンドの処理を実行した際、設定したファイルはgit statusに表示されなくなる

既にGit管理しているファイルを無視する方法

  • 設定方法が二つある為、どちらのやり方も記載する

git update-index --skip-worktreeコマンドを使用した場合

設定方法

オプションコマンド、--skip-worktreeの補足説明

  • フラグが設定されたファイルに何らかの変更を加えても、git addgit commit等のGit操作に反映はされない
  • git pullで他の開発者の変更を取り込む際にも、ローカルの変更は維持される

新たな変更を内容をgit pullでローカル環境に取り込む際は、フラグをリセットする必要がある

# -skip-worktreeを使用した方法
$ git update-index --skip-worktree <file>
# 相対パスにて、ファイルを指定する([ ]は不要)

確認方法

$ git ls-files -v | grep ^S       

# 出力結果
# `--skip-worktree`のオプションコマンドを使用すると[S]で表示をされる        
S test/test.text
S test/index.html

Gitの管理下に戻す方法

$ git update-index --no-skip-worktree <file>
# 相対パスにて、ファイルを指定する([ ]は不要)

git update-index –assume-unchangedコマンドを使用した場合

設定方法

オプションコマンド、–assume-unchangedの補足説明

  • --assume-unchangedフラグが設定されたファイルは、Gitが追跡し続ける

ローカル環境のみ、ファイルの内容を変更した場合でも、git pull等を行った際、ファイルの設定が上書きされる可能性がある

# –assume-unchangedを使用した方法
$ git update-index --assume-unchanged <file>
# 相対パスにて、ファイルを指定する([ ]は不要)

確認方法

$ git ls-files -v | grep ^h

# 出力結果
# `--assume-unchanged`のオプションコマンドを使用すると[h]で表示をされる        
h test/test.text
h test/index.html

Gitの管理下に戻す方法

$ git update-index --no-assume-unchanged <file>
# 相対パスにて、ファイルを指定する([ ]は不要)

参考資料

感想

 今回、初めてまともなチーム開発を行い、Gitの操作を正確に行わないと他の開発メンバーに多大なる影響を与える事を、改めて身に染みて理解しました。Gitに関しては、もっと理解する必要があるので、チーム開発を通して深く理解していきたいと考えています。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?