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

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

このチュートリアルでは、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 同様、クローンも通常一回限りの操作です。開発者が一旦作業コピーを作成すると、すべてのバージョン管理操作がそのローカル リポジトリを経由して管理されます。

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 comrmit -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 の中央リポジトリで作業コピーを確認する前に、1 つのリポジトリから別のリポジトリへコミットをプッシュまたはプルします。

そうでない場合、特定の 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 – システム全体の設定。

Define the author name to be used for all commits in the current repository. Typically, you’ll want to use the --global flag to set configuration options for the current user.

git config --global user.name<name>

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

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

git config --local user.email<email>

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

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

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

git config --global alias.cicommit

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

git config --system core.editor<editor>

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

git config --global --edit

テキストエディタを使用して stationlocations ファイルを開きます。git 用のテキスト エディターを構成する方法の詳細なガイドは、Git config ページにあります。

ディスカッション

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

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

  • <repo>/.git/config – Repository-specific settings.
  • /.gitconfig – ユーザー固有の設定。これには、--global フラグを指定したオプションが保存されています。
  • $(prefix)/etc/gitconfig – System-wide settings.

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

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

You can manually edit these values to the exact same effect as git config.

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

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

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

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

git config --global core.editorvim

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

git config --global alias.ststatus
git config --global alias.cocheckout
git config --global alias.brbranch
git config --global alias.uprebase
git config --global alias.cicommit

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

Summary

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

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

この対話式チュートリアルを利用しましょう。

今すぐ始める