本連載では、バージョン管理システム「Git」とGitのホスティングサービスの1つ「GitHub」を使うために必要な知識を基礎から解説しています。今回は、リモートリポジトリに関する基本コマンドとして、git remote -v、git remote add、git pus、git clone、git pullの使い方を紹介。
本連載「こっそり始めるGit/GitHub超入門」では、バージョン管理システム「Git」とGitのホスティングサービスの1つ「GitHub」を使うために必要な知識を基礎から解説していきます。具体的な操作を交えながら解説していきますので、本連載を最後まで読み終える頃には、GitやGitHubの基本的な操作が身に付いた状態になっていると思います。
前回の「2017年、GitHubを始めるために最低限知っておきたい各機能」ではGitHubの各機能の概要を解説しました。連載第9回目の本稿では、GitHub上に「リモートリポジトリ」を作成し、「リモートリポジトリ」に対する基本操作を試していきます。
本稿で解説する作業を行うには「GitHubのアカウント作成」や「SSH設定」を事前に行っておく必要があります。これらの準備手順については連載第7回の「はじまりはいつもプルリク? GitリポジトリホスティングサービスGitHubとは」で解説しています。
初めに、リモートリポジトリを新規作成する手順を解説していきます。
ローカルにあるファイルをリモートリポジトリに配置することによって、プロジェクトメンバー同士の共同作業を開始したり、異なる環境から最新のファイルを取得するための環境を整えたりすることができます。
ローカルリポジトリを作成します。このリポジトリで管理するファイルは、後ほど作成するGitHub上の「リモートリポジトリ」に反映します。
適当なディレクトリに移動します。そして今回の作業用のディレクトリを作成し、そこへ移動します。ここでは「hello-git-9」というディレクトリを作成しました。
$ cd /Users/hirayashingo/Documents/ $ mkdir hello-git-9 $ cd hello-git-9 $ pwd /Users/hirayashingo/Documents/hello-git-9
さらに、その中にリポジトリ用のディレクトリを作成し、そこへ移動します。ここでは「local」というディレクトリを作成しました。
$ mkdir local $ cd local/ $ pwd /Users/hirayashingo/Documents/hello-git-9/local
Gitリポジトリを作成し、「README.md」ファイル(後述)を作成します。
$ git init Initialized empty Git repository in /Users/hirayashingo/Documents/hello-git-9/local/.git/ $ echo "# hello-github" > README.md
「README.md」ファイルをコミットします。
$ git add README.md $ git commit -m "first commit" [master (root-commit) 5fd9303] first commit 1 file changed, 1 insertion(+) create mode 100644 README.md
GitHubにログインし、「Create a new ...」をクリックし、表示されるメニュー上の「New repository」をクリックします。
リポジトリ作成ページが表示されます。「Repository name」欄にリポジトリの名前を入力します。ここでは「hello-github」という名前を入力しました。
ページ中央にはリポジトリのタイプを選択するコントロールがあります。
「Public」を選択すると公開リポジトリが作成されます。この場合、リポジトリの中身は誰でも見られるようになります。
「Private」を選択すると非公開リポジトリを作成できます。非公開リポジトリを作成するには有料のプランに登録する必要があります。
今回は公開リポジトリを作成します。「Repository name」以外の入力項目・選択項目は編集せず、「Create repository」をクリックします。
リポジトリ作成が完了すると、リポジトリのページが表示されます。
現在、リポジトリの中には何も入っていないため、「リポジトリ作成後によく行う操作の例」が表示されています。
SSHを使ってGitHub上にリポジトリに接続するので「SSH」をクリックします。
今回は、既にローカルにリポジトリが存在します。次の「リモートリポジトリを登録する」では、見出し「…or push an existing repository from the command line」の下に書かれているコマンドを使用していきます。
「ローカルリポジトリを作成する」で作成したリポジトリにGitHub上のリモートリポジトリを登録する作業を行います。
まずは「git remote -v」コマンドを使用して、登録済みのリモートリポジトリを確認してみます。当然ですが、現時点では何も表示されません。
$ git remote -v
「git remote add <リモート名> <リポジトリURL>」コマンドを使用してリモートリポジトリを登録しましょう。「<リポジトリURL>に存在するリモートリポジトリ」が「<リモート名>という名前」で登録されます。
GitHub上のリポジトリのURLは「git@github.com:<ユーザー名>/<リポジトリ名>.git」という形式になります。<ユーザー名>はユーザー名に置き換えてください。
$ git remote add origin git@github.com:username/hello-github.git
再度「git remote -v」コマンドを使用すれば、リモートリポジトリが登録されたことを確認できます。
$ git remote -v origin git@github.com:username/hello-github.git (fetch) origin git@github.com:username/hello-github.git (push)
ローカルリポジトリの内容をリモートリポジトリに反映します。
「git push <リモート名> <ブランチ名>」コマンドを使用します。<リモート名>にはリモートリポジトリ登録時に付けた名前を指定します。<ブランチ名>には反映先のブランチ名を指定します。
以下のコマンドを実行すると、ローカルリポジトリの「master」ブランチの内容が、リモートリポジトリ「origin」の「master」ブランチに反映されます。
$ git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 230 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To github.com:username/hello-github.git * [new branch] master -> master
リポジトリのページへ戻り更新してみましょう。ローカルリポジトリの内容が反映されているはずです。
リポジトリのルートに「README.md」という名前のファイルを配置すると、図7のようにリポジトリページのファイル一覧の下にファイルの内容が表示されます。
「README.md」ファイルを配置することによって、リポジトリに関する説明を来訪者に伝えることができます。例えば、ソフトウェアライブラリのリポジトリであれば、ソースコードをビルドする前に必要な環境構築手順や、クラスの使用例などの説明が記述されます。
また、拡張子「.md」は「Markdown形式」の文書用の拡張子です。ファイルの内容をMarkdown形式で記述することによって、文章を構造化することができます。今回、「README.md」ファイルの内容は、「# hello-github」にしました。「# <文章>」という記述はHTMLの<h1>タグ相当の見出しとして扱われます。
Markdown形式の記述は、イシューやプルリクエストのコメントでも使えます。GitHubで利用可能な記法は以下のページで解説されています。
ここまでの作業の中で、ローカルリポジトリを元にリモートリポジトリを新規作成しました。次は、既存のリモートリポジトリをローカルに取り込む手順を解説します。
「リモートリポジトリ上の既存プロジェクトのソースコードを取得する」「別のPCで行う作業のためにリモートリポジトリからソースコードを取得する」などのケースをイメージしてみてください。
今回は、「リモートリポジトリを作成する」で作成したリモートリポジトリを「ローカルリポジトリを作成する」で扱ったディレクトリとは別のディレクトリに取り込みます。
リモートリポジトリのURLはGitHubのリポジトリページ上の「Clone or Download」をクリックすると表示できます。
1つ上の階層に移動します。「hello-git-9」には「local」ディレクトリだけが存在する状態になっています。
$ pwd /Users/hirayashingo/Documents/hello-git-9/local $ cd .. $ pwd /Users/hirayashingo/Documents/hello-git-9 $ ls local
「git clone <リポジトリURL>」コマンドを使用してリモートリポジトリを複製してローカルに取り込みます。
$ git clone git@github.com:username/hello-github.git Cloning into 'hello-github'... remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0 Receiving objects: 100% (3/3), done.
「hello-git-9」の中に「hello-github」ディレクトリが作成されました。
$ ls hello-github local
「hello-github」ディレクトリの中はGit管理下になっていて、「ローカルリポジトリを作成する」で作成したファイルがあります。
$ cd hello-github/ $ pwd /Users/hirayashingo/Documents/hello-git-9/hello-github $ ls -a . .. .git README.md $ cat README.md # hello-github
既存のリモートリポジトリを複製してローカルに取り込む操作は、これで完了です。次の「リモートリポジトリを更新する」では、リモートリポジトリを更新していく中で行う操作を解説します。
最後に、リモートリポジトリを使用して共同作業を進めていく上で基本となる操作を解説します。
ローカルで行った変更をリモートリポジトリに反映すれば、共同作業者が変更を確認できるようになります。リモートリポジトリの変更をローカルに取り込めば、共同作業者が行った変更をローカルで確認できるようになります。
「hello-github」ディレクトリ内の「README.md」ファイルを変更し、git addコマンドでステージ、git commit -mコマンドでコミットします。
$ pwd /Users/hirayashingo/Documents/hello-git-9/hello-github $ echo "GitHubの機能を試すためのリポジトリです。" >> README.md $ cat README.md # hello-github GitHubの機能を試すためのリポジトリです。 $ git add README.md $ git commit -m "リポジトリの説明を追加" [master 8671af2] リポジトリの説明を追加 1 file changed, 1 insertion(+)
先ほど紹介したgit pushコマンドでリモートリポジトリへ反映します。
$ git push origin master Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 355 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To github.com:username/hello-github.git 5fd9303..8671af2 master -> master
リポジトリのページへ戻り更新してみましょう。「README.md」ファイルに対する変更が反映されているはずです。
「local」ディレクトリに移動します。
$ pwd /Users/hirayashingo/Documents/hello-git-9/hello-github $ cd .. $ cd local/ $ pwd /Users/hirayashingo/Documents/hello-git-9/local
「README.md」ファイルの内容は古いままです。
$ cat README.md # hello-github
「git pull <リモート名> <ブランチ名>」コマンドを使用して
リモートリポジトリの最新データを取り込みます。
$ git pull origin master remote: Counting objects: 3, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From github.com:username/hello-github * branch master -> FETCH_HEAD 5fd9303..8671af2 master -> origin/master Updating 5fd9303..8671af2 Fast-forward README.md | 1 + 1 file changed, 1 insertion(+)
「README.md」ファイルの内容が更新されました。
$ cat README.md # hello-github GitHubの機能を試すためのリポジトリです。
本稿ではGitHub上に「リモートリポジトリ」を作成し、「リモートリポジトリ」に対する基本操作を試していきました。
本記事で初めて登場したGitのコマンドは以下の通りです。
次回の記事では「プルリクエスト」について解説する予定です。お楽しみに!
クラスメソッド株式会社 iPhoneアプリサービス事業部所属のプログラマーです。iOSアプリの開発がメインですが、デザインやAWSなども勉強中です。
ブログ:http://dev.classmethod.jp/author/hiraya-shingo/
Copyright © ITmedia, Inc. All Rights Reserved.