Setting up a repository

リポジトリのセットアップ

このチュートリアルでは、Git バージョン管理の下でリポジトリ (repo) をセットアップする方法について概説します。このリソースでは、新規または既存のプロジェクトの Git リポジトリ初期化について順を追って説明します。ローカルで作成されたリポジトリや、リモートリポジトリからクローンされたリポジトリのワークフロー例についても示します。このガイドは、コマンドラインインターフェイスの基本的な知識を持ったユーザーを対象としています。

このガイドで説明した内容の要点は以下のとおりです。

  • 新しい Git リポジトリの初期化
  • 既存の Git リポジトリのクローン作成
  • ファイルの修正バージョンをリポジトリにコミットする
  • リモートコラボレーション用の Git リポジトリを構成する
  • 一般的な Git バージョン管理コマンド

このモジュールの最後には、Git リポジトリを作成、共通の Git コマンドを使用、変更されたファイルをコミット、プロジェクトの履歴を表示、Git ホスティングサービス (Bitbucket) への接続を構成できるようになります。

Git リポジトリとは

Git リポジトリは、プロジェクトの仮想ストレージです。コードのバージョンを保存して、必要なときにアクセスすることができます。

新しいリポジトリの初期化: git init

新しいリポジトリを作成するには、git init コマンドを使用します。git init は、新しいリポジトリの初期セットアップ時に使用するワンタイムコマンドです。このコマンドを実行すると、現在の作業ディレクトリ内に新しい .git サブディレクトリが作成されます。これにより、新しい master ブランチも作成されます。

新しい git リポジトリを使用して既存のプロジェクトをバージョン管理する

この例では、リポジトリの作成場所となる既存のプロジェクトフォルダーが既にあることを想定しています。まず、ルートプロジェクトフォルダーに cd を実行してから、git init コマンドを実行します。

cd /path/to/your/existing/code
git init

git init で既存のプロジェクトディレクトリをポイントすると、上記と同じ初期化セットアップが、そのプロジェクトディレクトリの範囲で実行されます。

git init <project directory>

git init の詳細なリソースについては、git init のページを参照してください。

既存のリポジトリのクローンを作成する: git clone

プロジェクトで中央リポジトリが既に作成されている場合、ユーザーがローカルの開発クローンを取得する最も一般的な方法は clone コマンドを使用することです。git init 同様、クローンも通常 1 回限りの操作です。開発者がいったん作業コピーを取得すると、すべてのバージョン管理操作がそのローカルリポジトリを経由して管理されます。

git clone <repo url>

git clone は、リモートリポジトリのコピーまたはクローンの作成に使用されます。git clone をリポジトリ URL に渡します。Git は、複数のネットワークプロトコルや対応する URL 形式をサポートしています。この例では、Git SSH プロトコルを使用します。Git SSH URL は次のテンプレートに従います。git@HOSTNAME:USERNAME/REPONAME.git

Git SSH URL の例は git@bitbucket.org:rhyolight/javascript-data-store.git となります。ここで、テンプレートの値は以下と一致します。

  • HOSTNAME: bitbucket.org
  • USERNAME: rhyolight
  • REPONAME: javascript-data-store

実行すると、master ブランチの最新バージョンのリモートファイルがプルダウンされ、新しいフォルダーに追加されます。新しいフォルダーには、REPONAME にちなんだ名前 (この場合は javascript-data-store) が付けられます。フォルダーには、リモートリポジトリの履歴と、新しく作成された master ブランチが含まれます。

git clone の使用方法とサポートされる Git URL 形式に関するその他のドキュメントについては、git clone ページを参照してください。

変更をリポジトリに保存する: git add と git commit

これで、リポジトリがクローン/初期化されました。ファイルバージョンの変更をコミットできます。次の例では、/path/to/project にプロジェクトをセットアップしたと想定しています。この例では次の手順を実行します。

  • ディレクトリを /path/to/project に変更します
  • 「git チュートリアルのテストコンテンツ」というコンテンツが入った新しいファイル CommitTest.txt を作成します
  • git は、リポジトリのステージング領域に CommitTest.txt を追加します
  • コミットで実行された内容を説明するメッセージが入った、新しいコミットを作成します
cd /path/to/project
echo "test content for git tutorial" >> CommitTest.txt
git add CommitTest.txt
git commit -m "added CommitTest.txt to the repo"

この例を実行すると、リポジトリは履歴に CommitTest.txt を追加し、ファイルに対する将来の更新を追跡します。

この例ではさらに、addcommit という、2 つの git コマンドについて紹介しました。これらの例は非常に制限された例でしたが、いずれのコマンドについても、git add および git commit ページで詳細に説明されています。もう 1 つの一般的な git add の使用事例に、--all オプションがあります。git add --all を実行すると、リポジトリ内の変更済ファイルや追跡されていないファイルを取得し、それらをリポジトリに追加して、リポジトリの作業ツリーを更新します。

リポジトリ間コラボレーション: git push

Git における「作業コピー」が SVN リポジトリからソースコードをチェックアウトして得られる作業コピーとは大きく異なる概念であることを理解することが大切です。SVN とは異なり、Git では作業コピーと中央リポジトリとの間に実質的な相違はありません。両者とも完全な Git リポジトリです。

この点で Git を使ったコラボレーションと SVN を使ったコラボレーションは根本的に異なります。SVN は中央リポジトリと作業コピーの間の関係に依存しますが、Git のコラボレーションモデルはリポジトリ間の相互作用に基づきます。SVN の中央リポジトリに作業コピーをチェックインする代わりに、あるリポジトリから別のリポジトリへコミットをプッシュまたはプルします。

もちろん、特定の Git リポジトリに特別な意味を与えることも可能です。たとえば、単に Git リポジトリを「中央」リポジトリとして指定すれば、Git を使用して一元管理したワークフローを複製できます。これは、VCS 自体の機能を使っているのではなく、規則を通して実行されます。

ベア リポジトリとクローン リポジトリ

前の「新しいリポジトリの初期化」セクションで git clone を使用してローカルリポジトリを作成した場合、リポジトリはリモートコラボレーション用に既に構成されています。git clone は、クローン元の Git URL を示すリモートを使用して、リポジトリを自動的に構成します。つまり、ファイルに変更を加えてそれらをコミットしたら、git push でそれらの変更をリモート リポジトリにプッシュできます。

git init を使用して新しいリポジトリを作成した場合、変更のプッシュ先となるリモートリポジトリはありません。新しいリポジトリを初期化する際の一般的なパターンは、Bitbucket などのホスト型 Git サービスに移動し、そこでリポジトリを作成することです。このサービスでは、作成したリポジトリをローカルの Git リポジトリへ追加し、ホストされているリポジトリへ git push を実行できる Git URL を提供します。選択したサービスでリモートリポジトリを作成したら、マッピングを使用してローカルリポジトリを作成します。このプロセスについては、以下の「構成とセットアップ」ガイドで説明します。

独自のリモートリポジトリをホストする場合は、「ベアリポジトリ」を設定する必要があります。git initgit clone の両方で --bare 引数を使用できます。ベアリポジトリの最も一般的な使用事例は、リモートの中央 Git リポジトリの作成です

構成とセットアップ: git config

リモートリポジトリを設定したら、リモートリポジトリ URL をローカルの git config に追加し、ローカルブランチのアップストリームブランチをセットアップします。git remote コマンドはこのようなユーティリティを提供します。

git remote add <remote_name> <remote_repo_url>

このコマンドは、<remote_repo_url> のリモートリポジトリを <remote_name> の下のローカルリポジトリの ref にマッピングします。リモートリポジトリのマッピングが完了したら、そこへローカルブランチをプッシュできます。

git push -u <remote_name> <local_branch_name>

このコマンドは、<local_branc_name> の下のローカルリポジトリを <remote_name> のリモートリポジトリにプッシュします。

git remote の詳細については、Git remote のページを参照してください。

リモートリポジトリ URL を設定するだけでなく、ユーザー名やメールなどの、グローバルな Git 構成の設定が必要となる場合があります。git config コマンドを使用すると、コマンドラインから Git インストール (または個別のリポジトリ) を設定できます。このコマンドを使用すると、ユーザー情報から、プリファレンスや、リポジトリ動作の初期設定にいたるまであらゆる項目の設定が可能です。通常使用される設定オプションのいくつかを以下に示します。

Git の設定オプションは 3 つのファイルに分けて保存され、以下のコマンドを用いて、個々のリポジトリ (ローカル)、ユーザー (グローバル)、システム全体 (システム) の設定内容をそれぞれ確認できます。

  • ローカル: <repo>/.git/config - リポジトリ固有の設定。
  • グローバル: /.gitconfig - ユーザー固有の設定。これには、--global フラグを指定したオプションが保存されています。
  • システム: $(prefix)/etc/gitconfig - システム全体の設定。

現在のリポジトリにおけるすべてのコミットに使われる作成者名を設定します。通常、現在のユーザーの構成オプションを設定するには --global フラグを使用します。

git config --global user.name <name>

現在のユーザーが行うすべてのコミットの作成者名を設定します。

--local オプションを追加する場合や、構成レベルオプションを渡さない場合は、現在のローカル リポジトリの user.name が設定されます。

git config --local user.email <email>

現在のユーザーが行うすべてのコミットに関してその作成者のメールアドレスを設定します。

git config --global alias.<alias-name> <git-command>

Git コマンドのショートカットを作成します。これは、一般的に使用されている git コマンドのカスタム ショートカットを作成する、強力なユーティリティです。最もシンプルな例は次のようになります。

git config --global alias.ci commit

これにより、git commit へのショートカットとして実行できる ci コマンドが作成されます。git の別名の詳細については、git config ページを参照してください。

git config --system core.editor <editor>

現在のマシンのすべてのユーザーに git commit などのコマンドを使用してテキストエディターを定義します。<editor> 引数は、目的のエディターを起動するコマンドにする必要があります (例: vi)。この例では、--system オプションを紹介します。--system オプションはシステム全体の設定、つまりマシン上のすべてのユーザーとリポジトリを設定します。構成関連の詳細については、git config ページにアクセスしてください。

git config --global --edit

グローバルな設定ファイルをテキストエディターで開くコマンドで、これを使用して手動で設定ファイルを編集することができます。git 用のテキストエディターを構成する方法の詳細なガイドは、Git config ページにあります。

ディスカッション

すべての構成オプションはプレーンテキストファイルで保存されるため、git config コマンドは便宜性を高めるためのコマンドラインインターフェイスにすぎません。一般的に、Git インストールは、新しい開発マシンで作業を始める際にのみ構成する必要があります。ほとんどすべての場合で、--global フラグを使用します。重要な例外の 1 つとして、作成者のメールアドレスを上書きすることがあります。個人用およびオープン ソース リポジトリの個人用メールアドレスを設定し、業務関連のリポジトリには仕事用メールアドレスを設定することができます。

Git の設定オプションは 3 つのファイルに分けて保存され、以下のコマンドを用いて、個々のリポジトリ、ユーザー、システム全体の設定内容をそれぞれ確認できます。

  • <repo>/.git/config - リポジトリ固有の設定。
  • ~/.gitconfig - ユーザー固有の設定。これには、--global フラグを指定したオプションが保存されています。
  • $(prefix)/etc/gitconfig - システム全体の設定。

これらのファイルのオプション設定が矛盾する場合は、ユーザー固有の設定がシステム全体に関する設定に優越し、各リポジトリ固有の設定がユーザー固有の設定に優越します。これらのファイルを開くと、次のような内容が表示されます。

[user] name = John Smith email = john@example.com [alias] st = status co = checkout br = branch up = rebase ci = commit [core] editor = vim

これらの値は、git config と同じ働きをするように手動で編集できます。

Git のインストール後に最初にするべきことは、ユーザーの名前とメールアドレスを設定し、いくつかのデフォルト設定をカスタマイズすることです。初期設定コマンドは通常次のようなものになります。

Git に git config であることを伝える

git --global user.name "John Smith" git config --global user.email john@example.com

お気に入りのテキストエディターを選択する

git config --global core.editor vim

SVN のようなエイリアスをいくつか追加する

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.up rebase
git config --global alias.ci commit

これを実行すると、以前のセクションの ~ /.gitconfig ファイルが生成されます。git config の詳細については、git config ページを参照してください。

概要

ここでは、git initgit clone という 2 つの方法を使用して git リポジトリを作成する方法を示します。このガイドは、バージョン管理が必要なソフトウェアソースコードやその他のコンテンツの管理に適用できます。Git addgit commitgit push、および git remote についても紹介し、高レベルで活用します。

チームに適したコードリポジトリシステムの選択に関するガイドをお読みください。

Git を学ぶ準備はできていますか?

この対話式のチュートリアルをお試しください。

今すぐ始める