SIGMA-SE Tech Blog

SIGMA-SE Tech Blog


当サイトは、過去に運営していた別ドメイン(unisia-se.com)から sigma-se.com へ移行した技術ブログです。
旧サイトの記事をもとに、内容の精査・加筆・最新化を行い再構成しています。
正確で実用的な情報提供を目的としています。

Git - GitHub登録・SSH鍵設定・ブランチ作成までの開発準備

概要

GitHubアカウントの準備、SSH鍵の作成と登録、リモートリポジトリの作成、clone、ブランチ作成までを整理する。

Gitを使った開発では、ローカルリポジトリとリモートリポジトリの関係を理解しておくと、clone、branch、pushの意味が分かりやすくなる。この記事は、開発を始める前の初期設定に焦点を当てる。

この記事で扱うこと

  • GitリポジトリとGitHubリポジトリの違い。
  • ローカルリポジトリとリモートリポジトリの関係。
  • SSH鍵を使ってGitHubへ接続する流れ。
  • リモートリポジトリをcloneする手順。
  • ブランチを作成して切り替える基本操作。

作業前に確認すること

項目 確認内容
GitHubアカウント メール認証と基本設定を済ませる。
SSH鍵 公開鍵と秘密鍵の役割を分けて理解する。
リポジトリ ローカルとリモートのどちらに何があるかを整理する。
ブランチ名 作業内容が分かる名前を付ける。
接続確認 GitHubへのSSH認証が通ることを確認する。

作業時の注意点

作業時の注意点 整理するポイント
公開鍵と秘密鍵 GitHubに登録するのは公開鍵であり、秘密鍵は外へ出さない。
masterとmain 現在はmainが標準のことが多く、古い資料ではmaster表記が残る。
clone後の作業場所 cloneで作成されたディレクトリ内でgitコマンドを実行する。
ブランチ作成と切り替え git branchは作成、git checkoutは切り替えという役割を分ける。

事前説明

Git、GitHubのリポジトリ構成イメージ

  • Gitリポジトリ
    Gitリポジトリは、Gitで管理される変更履歴を記録するローカルのデータベースで開発者のPCやローカル環境に保存される。
    個人やチームでバージョン管理をローカル環境で行う場合に使用され、オフラインでも利用可能。
    他の開発者との共有には、別途リモートリポジトリが必要となる。
    リモートリポジトリを利用する場合は、GitHubGitLabBitbucketなどのGitリポジトリをホスティングするWebサービスを利用する。

  • GitHubリポジトリ
    GitHubは、Gitの機能を拡張し、共有やコラボレーションを行うためのWebサービスでチームやオープンソースプロジェクトで開発する場合に使用する。
    GitHubリポジトリは、GitリポジトリをGitHubプラットフォーム上でホストしたもので単にリモートリポジトリと呼ばれることが多い。

    オンラインでホストされ、他の開発者とリポジトリを共有でき、pullリクエストやIssue管理、アクションの自動化など、GitHub独自の機能が利用可能。
    GitHubリポジトリをリモートリポジトリとして利用し、ローカルと同期しながらソース管理する。

    一般的に開発者がローカル管理しているリポジトリをローカルリポジトリ、GitHubやGitLab、BitbucketなどのVCS(Version Control System)を介してネットワーク上で管理しているリポジトリをリモートリポジトリという。

Gitブランチと運用

  • Gitブランチ
    Gitブランチとは、複数の開発者が同時に修正しても互いに影響を受けないよう機能単位または、開発者もしくはグループ単位に割り当てる開発領域のこと。
    ブランチ上で行った変更履歴もそれぞれ記録され変更後、ブランチ同士のマージを行いソース管理していく。
    初期状態では、Gitリポジトリの作成と同時に作られるmaster(※)ブランチのみ存在し、このmaster(※)ブランチがすべての起点となる。
    ※ 2020年10月1日以降、デフォルトブランチ名がmasterからmainに変更されている。

  • 統合ブランチとトピックブランチ
    通常運用のmasterブランチは、リリース可能なリビジョンが常に切ってある統合ブランチとして使用される。
    また、統合ブランチを起点とし、不具合修正、仕様変更などの課題単位に作成するブランチをトピックブランチという。
    変更後は、課題単位に作成されたトピックブランチを統合ブランチにマージする。
    統合ブランチにマージ後、不要となったトピックブランチは削除する。

    トピックブランチ名は、改修内容が分かりやすいようにプロジェクト内の課題管理方法に準じた名前にするのが一般的。
    ※ 課題管理番号を含めた短い名前にすることが多い。

実施内容

GitHubのアカウント準備

  • GitHubのアカウント登録 https://github.com からアカウント登録(Sign up)する。

  • メール認証
    登録したメールアドレス宛にメール「[GitHub] Please verify your email」が来るので、本文内のURLにアクセスしメール認証を完了させる。

  • 有料プラン変更
    (1) 右上のプロフィールアイコンからSettingsリンクをクリック。
    (2) 左側のサイドメニューからBillingリンクをクリック。
    (3) Billing overviewセクションPlanにあるGet private repositoriesボタンをクリック。
    (4) Upgrade summaryセクションPay monthly / Pay yearlyラジオボタンを選択。
    (5) Billing informationセクションAdd a Payment Methodリンクから支払い方法を指定。
    (6) 必須情報の入力後、Upgrade planボタンをクリックする。
    (7) (6)の後、Billing overviewセクションPlanPersonal - Unlimited private repositoriesと表示されていれば、有料版へプラン変更が正常に完了。

SSHの公開鍵、秘密鍵の生成

通信手段は、SSHを利用する。

  • id_rsa(秘密鍵)、id_rsa.pub(公開鍵)の生成
    homeディレクトリに.sshフォルダを作成後、そのフォルダに移動し、ssh-keygenを実行。

    $ mkdir ~/.ssh
    $ cd ~/.ssh
    $ ssh-keygen -t rsa -C "GitHubに登録したメールアドレス"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):    # Enter押下
    Enter passphrase (empty for no passphrase):    # 新規のパスワードを入力
    Enter same passphrase again:    # 確認用のパスワードを入力
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    …
    
  • 秘密鍵、公開鍵の生成確認

    $ ls ~/.ssh
    id_rsa  id_rsa.pub
    
  • 秘密鍵、パスフレーズの登録
    ssh-addで、SSH接続時にパスワード入力を省略する設定を行う。 ssh-addは、OSによって実行方法が若干違うので注意。

    $ eval `ssh-agent`    # ssh-agent起動(evalなしだと環境変数の設定が必要)
    $ ssh-add ~/.ssh/id_rsa
    $ ssh-add -l    # 登録確認
    2048 ********** /root/.ssh/id_rsa (RSA)    # このように表示されれば正常に登録されている
    
  • GitHubに公開鍵を登録
    (1) 右上のプロフィールアイコンからSettingsリンクをクリックする。
    (2) 左側のサイドメニューからSSH and GPG Keysリンクをクリックする。
    (3) SSH Keysセクションの右側にあるadd SSH Keyボタンをクリックする。
    (4) Titleテキストボックスに任意の端末認識ができるような分かりやすいタイトルを記入する。
    (5) 上記 秘密鍵、パスフレーズの登録で生成された id_rsa.pub(公開鍵) ファイル内すべてをKeyにコピー&ペーストする。
    (6) Add keyをクリックして保存する。
    (7) GitHubのログインパスワードの入力を求められるので入力する。
    (8) (3) で表示した画面に切り替わりSSH keysセクションに上記 (4)で設定したTitleが表示されていれば成功。

  • 接続確認
    最後の2行は、GitHubはシェルアクセスを提供しない(許可しない)旨のメッセージなので問題なし、正常に接続できている。

    $ ssh -l git -i ~/.ssh/id_rsa github.com
    The authenticity of host 'github.com (192.30.255.113)' can't be established.
    RSA key fingerprint is **********.
    RSA key fingerprint is **********.
    Are you sure you want to continue connecting (yes/no)? yes    # 接続を継続するかの確認(yesを入力)
    Warning: Permanently added 'github.com,192.30.255.113' (RSA) to the list of known hosts.
    Enter passphrase for key '/root/.ssh/id_rsa':    # 上記、[ ssh-keygen ]で登録したパスワードを入力
    PTY allocation request failed on channel 0
    Hi ! You've successfully authenticated, but GitHub does not provide shell access.
    Connection to github.com closed.
    

GitHubのリポジトリ作成

  • id_rsa(秘密鍵)、id_rsa.pub(公開鍵)の生成
    homeディレクトリに.sshフォルダを作成後、そのフォルダに移動し、ssh-keygenを実行する。
    (1) GitHubトップの右上「+」をクリックし、New RepositoryリンクからCreate a new repository画面に遷移する。
    (2) 画面上部にあるRepository nameに任意のリポジトリ名を入力する。
    (3) リポジトリの公開 / 非公開を設定するPublic / Privateラジオボタンを選択する。
    (4) (2)、(3) の入力に間違いがないことを確認しCreate repositoryボタンをクリックする。
    (5) Quick setup画面の表示後、そのすぐ下にあるSSHボタンをクリックする。

[git clone] : リモートリポジトリの複製

上記で作成したリモートリポジトリをclone(複製)する。

  • Gitの作業フォルダ作成

    $ mkdir ~/gitlocalrep
    $ cd gitlocalrep
    
  • リモートリポジトリをclone

    $ git clone git@github.com:sigma-se/exrep.git    # 下記※のパスを入力
    Cloning into 'exrep'...
    Enter passphrase for key '/root/.ssh/id_rsa':    # パスフレーズを入力
    warning: You appear to have cloned an empty repository.   # 空のディレクトリである警告
    $ ls    # 確認
    exrep
    

    ※ リモートリポジトリのQuick setup画面のSSHボタン右側にあるURL「git@github.com:<username>/<repositoryname>.git」。
    上記の通りcloneによってGitリポジトリがcloneされexrepディレクトリが作成される。

[git branch]:ブランチの作成

  • 現在のブランチ確認
    アスタリスク(*)があるブランチが現在の作業ブランチとなる。
    ※ 今回は、cloneしただけなのでmasterブランチのみ。

    $ cd ~/gitlocalrep/exrep    # cloneしたディレクトリに移動
    $ git branch    # ブランチの確認
     * master
    
  • topicbranchブランチの作成
    git branchと一緒に名前を指定することで、新規にブランチが作成される。

    $ git branch topicbranch  #「topicbranch」ブランチを作成
    $ git branch    # ブランチの確認
    * master
      topicbranch
    
  • topicbranchブランチに切り替え

    $ git checkout topicbranch
    Switched to branch 'topicbranch'
    $ git branch
      master
    * topicbranch
    
  • (補足)ブランチ作成と切り替えを同時に実行
    上記のgit branch topicbranchgit checkout topicbranchは、git checkout -bで一度で実行することができる。

    $ git checkout -b topicbranch
    Switched to branch 'topicbranch'
    $ git branch
      master
    * topicbranch
    <

以上で開発準備完了。

以降は、ローカルリポジトリ(ブランチ)からリモートリポジトリに対して、pull、commit, push等の操作を行いバージョン管理する流れとなる。
参考 : Git - 状態管理の概念と基本操作 : status, add, commit, diff, reset, push, pull, checkout

実務とのつながり

  • SSH接続
    毎回パスワードを入力せず、安全にリモート操作するために使う。
  • ブランチ運用
    機能追加や修正作業を本流から分離して進められる。
  • リモート連携
    チーム開発やバックアップの基本になる。

まとめ

  • GitHubを使う開発準備では、アカウント、SSH鍵、リポジトリ作成、cloneを順番に行う。
  • ローカルリポジトリとリモートリポジトリの関係を理解すると、pushやpullの意味が分かりやすい。
  • 作業はブランチを分けて進めると、変更範囲を管理しやすくなる。


Copyright SIGMA-SE All Rights Reserved.
s-hama@sigma-se.jp