Git
git init

git init コマンド: cancel, main, --bare --template オプション

この記事では、git init コマンドに関連するさまざまなトピックについて説明します。 git init が作成する .git フォルダの中身についての簡単な説明、デフォルトの main ブランチの変更、--bare オプションと --template オプション、そして初期化を取り消す方法までを扱います。

Git は現代的なプログラミングの柱のひとつなので、主要なトピックごとにひとつの記事を投稿することにします。

1. git init` とは?

git init コマンドは git initialize の略で、git を使ってディレクトリのバージョン管理を始めるときに使います。 この方法でバージョン管理を始めると、新しい git リポジトリを作成したことになります。リポジトリには、ファイルの変更やブランチ、タグ、ワーカー情報など、たくさんのメタデータが含まれています。

git init コマンドで新しいリポジトリを作成すると、内部的に .git ディレクトリが作成され、バージョン管理に必要なさまざまなメタデータが格納されます。

下のスクリーンショットは、git init コマンドで作成された .git ディレクトリの内部を示しています。

git init の結果

1.1. .git ディレクトリ内のファイルとディレクトリの説明 [#1.1].

.gitディレクトリ内のファイルとディレクトリを簡単に説明します。

  • config: 現在のリポジトリの設定のみを含むファイル。リモートリポジトリの URL、ベアリポジトリかどうか、ブランチの設定などが含まれ、グローバルな git 設定を上書きします。デフォルトの設定は
$ cat config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
  • HEAD: 現在作業しているブランチへのシンボリックリンクです。git はこのファイルを通して、現在作業しているブランチを記録しています。HEAD ファイルは以下の値をとります。
$ cat HEAD
ref: refs/heads/main
  • description: 現在のリポジトリの短い説明を含むファイルです。さまざまな git ツールでは、このファイルの内容を使ってリポジトリを紹介します。何も登録されていない場合は、以下の値になります。
$ cat descripton
Unnamed repository; edit this file 'description' to name the repository.
  • objects: git にコミットした内容はすべて git オブジェクトとして保存されます。このフォルダはオブジェクトの DB として機能し、SHA-1 ハッシュを使用して blob、ツリー、コミットなどのほとんどのものを保存します。

  • Refs: ブランチ、タグ、リモートブランチへのリンクを保持します。heads、tags、remotesの3つのサブディレクトリに分かれている。

  • info: 主に exclude フォルダでバージョン管理から除外するデータを管理する。.gitignore ファイルのような役割を果たす。

  • hooks: 特定のイベントが発生したときに IGT が自動的に実行するフックスクリプトのサンプルがあるディレクトリ。pre-commitやpre-rebaseなど、様々なシナリオに対応したフックスクリプトがあります。スクリプトを実行したい場合は、ファイル名の後ろの.sampleを削除して実行可能ファイルにしてください。以下は、hooks ディレクトリにあるスクリプトです。

.gitフォルダ in hooks

この git init コマンドは新しいリポジトリを作成し、それに関連する設定ファイルやデータを置く場所を作ります。

2. メインブランチの作成

伝統的に git のデフォルトブランチは master でしたが、さまざまな理由から main に変更するようになりました。現在では何も設定しなくてもデフォルトで main ブランチが推奨されていますが、バージョンによっては手動で設定する必要があるかもしれません。そこで、このセクションではデフォルトのブランチを変更する方法を説明します。

デフォルトブランチは git のグローバル設定で変更できます。ローカルでは、この設定はあなたのアカウントにのみ適用されます。コマンドは次のとおりです。

$ git config --global init.defaultBranch main

セットアップが完了したら、git init コマンドを使って新しいレポジトリを作成した場合は、以下のコマンドを使って現在作業しているブランチを確認することができます。

$ git branch
* main

まだ最初のコミットをしていない場合は、以下のコマンドで確認できる。

$ git symbolic-ref HEAD
refs/heads/main

3. bareオプション

git init コマンドで使用できるオプションの中で、最もポピュラーなオプションは --bare オプションです。このオプションはリモートリポジトリを作成するために使います。

リモートリポジトリとは、複数の開発者がひとつのリポジトリに貢献したり管理したりするために作成されるリポジトリのことです。リモートリポジトリは高度な共同作業環境で使用されるべきものです。リモートリポジトリをホストする一般的なサービスには、Github、GitLab、BitBucket などがあります。

Githubで新しいリモートリポジトリを作成する場合を考えてみましょう。--bareオプションをつけないと、新しいリモートリポジトリはGithubサーバー上のローカル環境に固有のデータと設定で作成されます。 管理したいのはローカル環境のソースコードです。 この場合、Githubは--bareオプションを使って何も設定されていない空のシェルリポジトリを作成し、リモートリポジトリとして使用します。

上記のようなホスティングサービスを使っておらず、自分でgitサーバーを立ち上げてリモートリポジトリを作成したい場合は、--bareオプションを使う必要があります。使い方は簡単です。

$ git init --bare my_remote_repo.git

上で示したように、オプションを追加することができます。ひとつ注意点があります。ベアリポジトリの名前には必ず拡張子 .git をつけてください。

4) -テンプレートオプション

git init コマンドは、常に同じファイルとディレクトリ構造を作成します。もし、同じ README.md ファイルを会社で作成する 10 の異なるプロジェクトに追加したいとしたらどうでしょうか。ファイルの作成と修正を10回繰り返さなければなりません。

そこで、余計な修正作業をすることなく、自分好みの新しいレポを作成するための --template オプションの登場です。 その名の通り、テンプレートに従って新しいレポを作成し、セクション1.1で見たすべてのファイルとディレクトリをテンプレートの対象にすることができます。

4.1. テンプレートオプションの使用

カスタムテンプレートを作成するには、まず git init コマンドで使われるデフォルトのテンプレートをコピーします。テンプレートディレクトリはオペレーティングシステムによって異なる場所にあるので、以下のコマンドで探すことをお勧めします。

$ find / -type d -name "templates" 2>/dev/null

検索結果にたくさん出てくるパスの中で、git-coreディレクトリの中にあるtemplatesディレクトリが探しているものです。

Mac OSでは、デフォルトでインストールされているgitを使用している場合、以下のパスに存在します。テンプレート内のフォルダは次のようになっています。セクション 1.1ですでに見たことがあるので、おなじみでしょう。

git-core/templates 内部の

このテンプレートディレクトリをコピーして必要なファイルやフォルダを追加したら、2つの方法のいずれかで新しいレポジトリを作成します。

まず、--template オプションを使います。 これはテンプレートを使いたいが、プロジェクトごとに情報を変更する必要がある場合に便利です。 コマンドは以下の通りです

$ git init --template=/path/of/template-dir

2つ目の方法は、グローバル設定に登録して永続的に使用することです。毎回同じテンプレートでレポを作成する場合、これは便利です。以下のコマンドを使うことができる。

$ git config --global init.templateDir /path/of/template-dir

テンプレートオプションを与えなくても、希望するパスのテンプレートを使って新しいレポが作成されることがわかります。

5. キャンセル、削除、アンインストール

バージョン管理のために git init コマンドを取り消したいことがあります。 その場合は、作成された .git ディレクトリを削除してください。 ディレクトリの下にあるすべてのファイルとフォルダーを削除する必要があるので、次のコマンドを入力してください。

$ rm -rf .git

Windowsのコマンドプロンプトを使用している場合は、以下のコマンドを入力します。

$ rmdir /s /q .git

WindowsでPowershellを使っている場合は、以下のコマンドを入力する必要がある。

Remove-Item -Recurse -Force .git

6. おわりに

この記事では、git init コマンドに関するさまざまなトピックを取り上げました。 .git フォルダの中身、デフォルトの main ブランチの変更、--bare オプションと --template オプション、そして初期化を取り消す方法まで取り上げました。

Git を使って新しいリポジトリを作り始める助けになれば幸いです。

copyright for git init

© 2023 All rights reserved.