Git.gitignore開発必携アドバイス集
.gitignoreファイルは、gitでプロジェクトを管理する際の必需品なので、ここで少し詳しく説明します!
I. なぜ.gitignoreを使うのか?
プロジェクトによっては、ローカルリポジトリからすべてのファイルをリモートリポジトリにアップロードするのではなく、例えば、いくつかの依存関係(node_modulesの下の依存関係)、binディレクトリの下のファイル、テストファイルなど、選択的にアップロードしたいことがあります。一方では、すべての依存関係やテストファイルをリモートにアップロードすることは大きな転送であり、他方では、例えば、ローカルの設定ファイルなど、自分側では利用できるファイルでも、他の人には利用できないものがあります。
これらの問題を解決するために、gitは.gitignoreファイルを導入し、それを使って選択的にファイルをアップロードすることができます。
II. 使用上のルール
2.1 コメント
コメントは#で始まり、コメントの内容が続きます。これは以下のように表示されます。
linuxy@linuxy:~/linuxGit$ cat .gitignore
# This is the .gitignore file.
# The following files are ignored
out
*.exe
linuxy@linuxy:~/linuxGit$
上記の例では、コメントは#で始まっています。
2.2 ドキュメントを無視する
(1) ファイルとディレクトリを無視する
例:folderName : folderNameファイルとfolderNameディレクトリを無視することを意味し、例えば、自動的に複数レベルのディレクトリを検索します。例:*/*/folderName.
簡単な例として、ローカルリポジトリのディレクトリ構造を以下に示します。
linuxy@linuxy:~/linuxGit$ tree
.
├── folder
│ └── file1
└── src
├── folder
└─ utils
└── folder
3 directories, 3 files
linuxy@linuxy:~/linuxGit$
.gitignoreファイルが以下のように読み取れるところ。
linuxy@linuxy:~/linuxGit$ cat .gitignore
# This is the .gitignore file.
# The following files are ignored
folder
linuxy@linuxy:~/linuxGit$
したがって、同じ名前のフォルダディレクトリ、src/folder ファイル、および src/utils/folder ファイルはローカルリポジトリでは無視されます、つまり、それらはリモートリポジトリにコミットされません。
(2) ファイルのみ無視する
以下にそのパターンを示す。
folderName
!folderName/
感嘆符 "!" が逆の操作を示す folderName ディレクトリではなく、folderName ファイルのみを無視します。
簡単な例を見るために、ローカルリポジトリのディレクトリ構造を以下に示します。
linuxy@linuxy:~/linuxGit$ tree
.
├── folder
│ └── file1
└── src
├── folder
└─ utils
└── folder
3 directories, 3 files
linuxy@linuxy:~/linuxGit$
.gitignoreファイルが以下のように読み取れるところ。
linuxy@linuxy:~/linuxGit$ cat .gitignore
# This is the .gitignore file.
# The following files are ignored
folder
!folder/
linuxy@linuxy:~/linuxGit$
したがって、ローカルリポジトリでは、src/folder ファイルと src/utils/folder ファイルは無視されますが、同じ名前のフォルダディレクトリは無視されません。
2.3 ディレクトリを無視する
スキーマは以下のとおりです。
folderName/
folderName ディレクトリを含む、無視する。
(1)カレントディレクトリのfolderName、例:folderName/。
(2) 複数階層のディレクトリにおけるfolderName、例:*/*/folderName/.
簡単な例を見るために、ローカルリポジトリのディレクトリ構造を以下に示します。
linuxy@linuxy:~/linuxGit$ tree
.
├── folder
│ └── file1
└── src
├── folder
└─ utils
└── folder
3 directories, 3 files
linuxy@linuxy:~/linuxGit$
.gitignoreファイルが以下のように読み取れるところ。
linuxy@linuxy:~/linuxGit$ cat .gitignore
# This is the .gitignore file.
# The following files are ignored
folder/
linuxy@linuxy:~/linuxGit$
したがって、ローカルリポジトリではフォルダディレクトリは無視されますが、同名の src/folder ファイルと src/utils/folder ファイルは無視されません。
2.4 ワイルドカードの使用
よく使われるワイルドカードは
(1) アスタリスク "*":複数の文字にマッチします。
(2) クエスチョンマーク "?" : '/' 以外の任意の文字にマッチします。
(3) 角括弧 "[xxxx]":リスト内の複数文字にマッチします。
簡単な例を見るために、ローカルリポジトリのディレクトリ構造を以下に示します。
linuxy@linuxy:~/linuxGit$ tree
.
├── src
│ ├── add.c
│ ├── add.i
│ └── add.o
├─ test.c
├─ test.i
└─ test.o
1 directory, 6 files
linuxy@linuxy:~/linuxGit$
.gitignoreファイルが以下のように読み取れるところ。
linuxy@linuxy:~/linuxGit$ cat .gitignore
# This is the .gitignore file.
# Here are the files that are ignored
*. [io]
linuxy@linuxy:~/linuxGit$
したがって、ローカルリポジトリでは、test.i ファイル、test.o ファイル、src/add.o ファイル、および src/add.i ファイルは無視され、test.c ファイルと add.c ファイルは無視されないことになります。注:ここで無視されるマッチパターンは、多階層ディレクトリの場合です。
2.5 逆方向の操作
そのモデルを以下に示します。
! Matching patterns
以前に無視されたマッチパターンが再びトレース内容に含まれることを示す。
例えば、ドキュメントのみを無視する場合に記載されたパターン。
folderName
!folderName/
folderNameファイルのみを無視し、folderNameディレクトリは無視しないことを示す。
2.6 ダブルアスタリスク
スラッシュの直後に2つ連続したアスタリスク "**"を付けると、複数階層のディレクトリであることを示します。
簡単な例として、.gitignore ファイルの中身は次のようになります。
linuxy@linuxy:~/linuxGit$ cat .gitignore
# This is the .gitignore file.
# Here are the files that are ignored
src/**/file
linuxy@linuxy:~/linuxGit$
2.7 その他のルール
(1)空行はどの文書にもマッチしない。
(2) git はディレクトリではなく、ファイルを追跡します。
(3) .gitignoreファイルの各行は、パターンを表します。
(4) ローカルリポジトリのファイルがすでに追跡されている場合は、.gitignore に ignore が設定されていても動作しません。
(5) .gitignore ファイルはリモートリポジトリにもアップロードされるので、同じリポジトリにいる人は同じ .gitignore ファイルを使うことができます。
III. 概要
gitを使用する場合、リモートへの不要なファイルのアップロードを減らすために、.gitignoreの使い方をマスターすることが重要です。
Git.gitignoreに関するこの記事は、開発のための提案集として必見です。
関連
-
UTC時間、GMT時間、ローカル時間、Unixタイムスタンプの具体的な使用方法
-
Burp Suite Proのインストールと設定のチュートリアルの詳細
-
近年のImagenetデータセットに基づくPytorchの画像分類モデルについてまとめる。
-
HDFSのNamenode高可用性メカニズムを見てみよう
-
12 バックエンド管理システム開発のためのフロントエンドフレームワーク(要約)
-
MATLABチュートリアル データ操作 変数操作と行列表現 詳細
-
[解決済み】リソースの読み込みに失敗しました:サーバーは404(Not Found)のステータスで応答しました。)
-
自律走行技術のV2X技術の紹介
-
VScodeでfortranを使用するための設定
-
DevOps、CI、CD、自動化を一挙に解説
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
超詳細チュートリアルのSecureCRT利用
-
SecureCRTのダウンロードとインストール手順の詳細
-
DSDSアプリケーションシナリオ(Qualcomm 5G)
-
VSCodeリモートサーバ接続エラー:Could not establish connection to VSCode
-
Win10でVScodeのリモート開発 ssh-remote(パスワード不要のログイン)を設定する
-
Visual Studioを使ったファイル差分比較の問題点まとめ
-
Visual Studio 2019 ネイティブで Azure Functions を実行できない場合の解決方法
-
5G帯の精緻化
-
[解決済み】スタイルシートとして解釈されるリソースがMIMEタイプtext/htmlで転送される(Webサーバーとは関係ないようです)。
-
C1ミッション01:ゲームアーカイブスの改造方法