LoginSignup
0
0

.gitignore 使ってみた

Posted at

はじめに

.gitignoreをちゃんと触ったことがなく、
「gitによってやり取りされないためのもの」くらいのイメージしかありませんでした。

.gitignoreに特化して使ってみたところ、勘違いしていた点があったので記事にします。

Githubからローカルへcloneしてみる

スクリーンショット 2024-04-06 14.54.30.png

このレポジトリから、test2.txtだけ.gitignoreに記述し、ローカルにcloneしてみます。

予想では、test.txtだけがローカルにcloneされると思いましたが・・・

スクリーンショット 2024-04-06 15.11.01.png

あれ?test2.txtが存在しますね。

test2.txtを編集してコミットし、リモートにpushしてみましょう。

スクリーンショット 2024-04-06 15.16.21.png

pushも行われています。あれ?.gitignoreが機能してない?

すでに追跡されているファイルには無効

実は、すでに追跡されているファイルの場合、.gitignoreは無効なようです。

.gitignoreファイルはGitで無視するファイルやディレクトリを指定するために使用されますが、これが適用されるのはファイルがGitによって追跡されていない時だけです。つまり、.gitignoreに記載されているファイルが既にリモートリポジトリに存在している場合、そのファイルは.gitignoreの設定にかかわらずリポジトリに含まれます。

先程のように、すでに追跡されているファイルを.gitignoreで追跡しないようにしたいときは

git rm --cached file_or_directory

で、gitの追跡から外す必要があるようです。

--cachedオプションは、ワーキングディレクトリのコピーには影響せず、ステージングエリアのみに影響を与えるオプション)

スクリーンショット 2024-04-06 15.40.00.png

この状態でadd / commit / push してみましょう。

スクリーンショット 2024-04-06 15.44.39.png

おお!test2.txtが消えました!
なるほど、追跡をやめてpushしましたからね。こうなるんですね。

スクリーンショット 2024-04-06 15.45.53.png

commitもちゃんとされています。

まとめ

  • .gitignoreは「すでにgitが追跡しているファイル」には効力がない
    よって、リモートにすでに存在しているファイルには無効
  • すでに追跡されているファイルの場合、git rm --cached file_or_directoryで追跡から除外する必要がある

知ったつもりでしたが、手を動かしてみると学びがありました。

さて、次は何を書こうかしら・・・

0
0
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
0
0