GitHubの簡単なチュートリアル(リポジトリをブランチする)
この記事を書くに至った背景
8月末日をもって前職を辞め,9月1日から新しい会社にお世話になっています.(転職の話はおいおい).
前職では割りと(というか大分)堅い感じの開発スタイルで仕事をしていたこともあり,使用しているツールはSubVersionであったり,言語はJavaや.NET(C#)であったりしました.CIやTDDなどは一部行っている人や組織もあったようですが,僕の周りではほとんどそういった話はききませんでした.
新しい会社はベンチャー企業ということもあり,GoogleやGitHub,OSSを利用して開発を進めています.GoogleアカウントやOSSの一部はまぁ良いとして,GitHubは独学で本やdotinstallで勉強していましたがやはり実務で使うとなるとなかなかうまく行かないこともありました.
とりあえず,日々の学びをアウトプットしようと思い,記事を書きました.
手順
GitHubはGitのホスティングサービスです.GitHub=Gitではありません.GitHubに似たサービスとしては色々あるようですが,bitbucketなどが有名ではないでしょうか.
環境は下記の通りです.macで作業していますが,windowsでも同様のツールを使って同じことができます.
公開鍵と秘密鍵を作成する
秘密鍵は,自分自身のPCに大事にとっておくものです.公開鍵は,sshでログインするサーバーやサービスに登録するものです.秘密鍵と公開鍵はペアになっています.(対応したペアでない下記同士では通信はできません).
macでは下記のコマンドで鍵を作成します.
$cd ~/.ssh
$ssh-keygen -t rsa
ふたつ目のコマンドは,いくつか質問をされますが,とりあえずEnterですすめていって大丈夫です.
ポイントは以下のとおりです.
- .sshフォルダに公開鍵と秘密鍵を作成する.(sshコマンドがこの場所を見に行くため)
- id_rsa(秘密鍵)とid_rsa.pub(公開鍵)が作成されます.
- キーの名前を変えたい場合は,下記の質問に名前を指定すればOKです.(パスを指定する場合は,.sshディレクトリにいなくてもOK)
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/{user_name}/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
公開鍵をGitHubやサーバーにアップロードする
クリップボードに公開鍵をコピーします.
$pbcopy < ~/.ssh/id/rsa.pub
https://github.com/settings/ssh へアクセスして公開鍵をコピーします.
接続確認
$ ssh -T git@github.com
GitHubからファイルを取得する
$ git clone git@github.com:{github_user_name}/{repository}.git
git clone は gitリポジトリからファイルをコピーするコマンドです.{github_user_name}や{repository}の部分は適宜読み変えてください.ファイル名を指定してcloneする場合は,.gitの後ろに名前をつけます.
gitの操作
ブランチを切る
まずは,ブランチを切ります.
ブランチは,ローカルにcloneしたgitリポジトリに別名をつけて,別versionとして管理する作業です.
$git branch {branch_name}
$ git branch
ふたつ目のコマンドで,現在のブランチを確認できます.
ここでは,20160901/hoge という名前でブランチを切ったとします.
ファイルを作成する.gitの管理に加える.ローカルcommitする.
基本的な流れです.
$ touch hoge.md # ファイル作成
$ vim hoge.md # ファイル編集
$ git add hoge.md # 作成したファイルをgitの管理下におく
$ git commit -m “{message}” hoge.md # ローカル上でコミットする.
プルする
コミットしたファイルをgithubへプルします.
$ git pull origin 20160901/hoge
既に同じ名前のブランチがあるとエラーがでます.
プルリクエストする
githubに移動して,手動でプルリクエストのコメントを書きます.
次回予告
今日はここまでです.
下記のコンテンツはまだ扱っていません.(これから勉強します.)
- gitでファイルが衝突した場合の操作
- pull-requestした後のマージ
などなど