リポジトリの作成
最終更新日:2024-03-28 | ページの編集
概要
質問
- Gitはどこに情報を格納しますか?
目的
- ローカルのGitリポジトリを作成する。
-
.git
ディレクトリの目的を説明する。
Gitの設定ができたら、 それを使い始めることができます。
火星に惑星着陸船を送ることが可能かどうかを調査しているウルフマンとドラキュラの話に戻りましょう。
ウルフマン対ドラキュラ by b-maze / Deviant Art. 火星 by European Space Agency / CC-BY-SA 3.0 IGO. 冥王星 / Courtesy NASA/JPL-Caltech. ミイラ © Gilad Fried / The Noun Project / CC BY 3.0. 月 © Luc Viatour / https://lucnix.be / CC BY-SA 3.0.
まず、Desktop
フォルダーに作業用のディレクトリを作成し、そのディレクトリに移動しましょう:
次に、Gitにplanets
をリポジトリ(Gitがファイルのバージョンを保存できる場所)にするように伝えます。
重要なのは、git init
はサブディレクトリとそのファイルを含むことができるリポジトリを作成するということです。サブディレクトリが最初から存在する場合でも、後から追加された場合でも、planets
リポジトリの中に入れ子になった別のリポジトリを作成する必要はありません。
また、
planets
ディレクトリの作成と、リポジトリとしての初期化はまったく別の処理であることに注意してください。
ls
を使ってディレクトリの内容を表示すると、
何も変更されていないように見えます:
ですが -a
フラグを追加してすべてを表示すると、Git が
.git
という隠しディレクトリを planets
の中に作ったことがわかります:
出力
. .. .git
Git
はプロジェクトのディレクトリ内にあるすべてのファイルとサブディレクトリを含む、プロジェクトに関するすべての情報を格納するためにこの特別なサブディレクトリを使用します。
.git
サブディレクトリを削除すると、プロジェクトの履歴を失うことになります。
次に、デフォルトのブランチを main
という名前に変更します。
あなたの設定やgitのバージョンによっては、これが既にデフォルトになっているかもしれません。
この変更の詳細については、「セットアップ」
を参照してください。
出力
Switched to a new branch 'main'
プロジェクトのステータスをGitに問うことで、すべてが正しく設定されていることを確認できます:
出力
On branch main
No commits yet
nothing to commit (create/copy files and use "git add" to track)
使用しているgit
のバージョンによって、出力の表現が少し異なるかもしれません。
Git リポジトリを作る場所
planets
(すでに作成したプロジェクト)についての情報を追跡すると共に、
ドラキュラは moons についての情報も追跡したいと考えています。
ウルフマンの心配にもかかわらず、ドラキュラは次の一連のコマンドを使って、彼の
planets
プロジェクト内に moons
プロジェクトを作ります:
BASH
$ cd ~/Desktop # Desktop ディレクトリに戻る
$ cd planets # すでに Git リポジトリである planets ディレクトリに移動する
$ ls -a # .git サブディレクトリがまだ planets ディレクトリに存在することを確認する
$ mkdir moons # サブディレクトリ planets/moons を作る
$ cd moons # moons サブディレクトリに移動する
$ git init # moons サブディレクトリをGitリポジトリにする
$ ls -a # .git サブディレクトリが存在し新しいGitリポジトリが作られたと示していることを確認する
git init
コマンドは、moons
サブディレクトリ内で実行され、moons
サブディレクトリに保存されているファイルを追跡するために必要でしょうか?
いいえ。 ドラキュラは moons
サブディレクトリを Git
リポジトリにする必要はありません。planets
リポジトリは、planets
ディレクトリの下のすべてのファイル、サブディレクトリ、およびサブディレクトリファイルを追跡するからです。
従って、moons
についてのすべての情報を追跡するのは、ドラキュラが moons
サブディレクトリをplanets
ディレクトリに追加するだけで済みます。
それと、Git
リポジトリが「入れ子」にされている場合、Gitリポジトリは互いに干渉する可能性があります:外側のリポジトリは内側のリポジトリのバージョン管理をしようとします。
したがって、新しいGitリポジトリはそれぞれ別のディレクトリに作るのがベストです。
ディレクトリに競合するリポジトリががないことを確認するには、git status
の出力を確認します。
次のような場合は、上の方で示したように新しいリポジトリを作ることをお勧めします:
出力
fatal: Not a git repository (or any of the parent directories): .git