Git
チャプター ▾ 第2版

2.1 Gitの基本 - Gitリポジトリの取得

Gitを始めるために1つの章だけを読むことができるなら、この章です。この章では、Gitで最終的に多くの時間を費やすことになる大部分の作業を行うために必要なすべての基本的なコマンドを説明します。この章を読み終える頃には、リポジトリの構成と初期化、ファイルの追跡の開始と停止、変更のステージングとコミットができるようになっているはずです。また、特定のファイルとファイルパターンを無視するようにGitを設定する方法、間違いをすばやく簡単に取り消す方法、プロジェクトの履歴を参照してコミット間の変更を表示する方法、リモートリポジトリからのプッシュとプルを行う方法も説明します。

Gitリポジトリの取得

通常、Gitリポジトリは次の2つの方法のいずれかで取得します。

  1. 現在バージョン管理されていないローカルディレクトリを取得し、それをGitリポジトリに変換するか、

  2. 別の場所から既存のGitリポジトリをクローンすることができます。

どちらの場合でも、作業の準備が整ったGitリポジトリがローカルマシンに作成されます。

既存のディレクトリでのリポジトリの初期化

現在バージョン管理されていないプロジェクトディレクトリがあり、Gitで制御を開始する場合は、まずそのプロジェクトのディレクトリに移動する必要があります。これをまだ実行したことがない場合、実行しているシステムによって少し異なって表示されます。

Linuxの場合

$ cd /home/user/my_project

macOSの場合

$ cd /Users/user/my_project

Windowsの場合

$ cd C:/Users/user/my_project

と入力します

$ git init

これにより、.gitという名前の新しいサブディレクトリが作成されます。これには、必要なすべてのリポジトリファイル(Gitリポジトリのスケルトン)が含まれます。この時点では、プロジェクト内のものはまだ追跡されていません。作成した.gitディレクトリに正確にどのようなファイルが含まれているかの詳細については、Gitの内部構造を参照してください。

(空のディレクトリではなく)既存のファイルのバージョン管理を開始する場合は、おそらくそれらのファイルの追跡を開始し、最初のコミットを行う必要があります。これを実現するには、追跡するファイルを指定するいくつかのgit addコマンドに続いてgit commitを実行します。

$ git add *.c
$ git add LICENSE
$ git commit -m 'Initial project version'

これらのコマンドの機能については、すぐに説明します。この時点で、追跡されたファイルと最初のコミットを持つGitリポジトリができました。

既存のリポジトリのクローン

既存のGitリポジトリのコピーを取得したい場合(例えば、あなたが貢献したいプロジェクトなど)、必要なコマンドはgit cloneです。Subversionのような他のVCSに詳しい方なら、このコマンドが「checkout」ではなく「clone」であることに気づくでしょう。これは重要な違いです。単に作業コピーを取得するのではなく、Gitはサーバーが持っているほぼすべてのデータの完全なコピーを受け取ります。git cloneを実行すると、プロジェクトの履歴にあるすべてのファイルのすべてのバージョンがデフォルトでプルダウンされます。実際、サーバーのディスクが破損した場合、ほとんどすべてのクライアント上のクローンを使用して、サーバーをクローンされたときの状態に戻すことができます(サーバー側のフックなどは失われる可能性がありますが、すべてのバージョン管理されたデータはそこにあります。詳しくはGitをサーバーに導入するを参照してください)。

リポジトリをクローンするには、git clone <url>を使用します。例えば、libgit2というGitリンク可能ライブラリをクローンしたい場合は、このようにします。

$ git clone https://github.com/libgit2/libgit2

これにより、libgit2という名前のディレクトリが作成され、その中に.gitディレクトリが初期化され、そのリポジトリのすべてのデータがプルダウンされ、最新バージョンの作業コピーがチェックアウトされます。作成されたばかりの新しいlibgit2ディレクトリに入ると、そこにはプロジェクトファイルがあり、作業や使用の準備ができています。

リポジトリをlibgit2以外の名前のディレクトリにクローンしたい場合は、追加の引数として新しいディレクトリ名を指定できます。

$ git clone https://github.com/libgit2/libgit2 mylibgit

このコマンドは前のコマンドと同じことを行いますが、ターゲットディレクトリの名前はmylibgitになります。

Gitには、使用できるさまざまな転送プロトコルがあります。前の例ではhttps://プロトコルを使用していますが、git://や、SSH転送プロトコルを使用するuser@server:path/to/repo.gitも見るかもしれません。Gitをサーバーに導入するでは、サーバーがGitリポジトリにアクセスするために設定できるすべてのオプションと、それぞれの長所と短所を紹介します。

scroll-to-top