karakaram-blog

Windowsにgitをインストールしてgithubにpushするまで

 ツイート 21  シェア 9  Google+1 2  Hatena 42

git-logo

Windowsにmsysgitをインストールしてgithubにpushができるまでを紹介します。


2013年1月28日追記
TortoiseGit の記事も書きました。併せてどうぞ。
WindowsでTortoiseGit ターミナルが嫌いな人向け


2013年7月30日追記
SourceTree に移行しました。
WindowsのGitクライアントSourceTreeのインストールと初期設定

動作確認環境

  • Windows7 64bit
  • msysGit 1.7.9
  • TortoiseGit 1.7.7.0 64bit

目次

  1. msysGitのインストール
  2. TortoiseGitのインストール
  3. githubにリポジトリを作成する
  4. SSHかHTTPSどちらかを利用してgithubのリポジトリに接続する
  5. SSH秘密鍵と公開鍵の作成
  6. SSH公開鍵をgithubに登録する
  7. SSH公開鍵の設定確認
  8. Gitの設定
  9. ローカルからgithubリポジトリにpushしてみる
  10. HTTPSのユーザー名とパスワード認証を省略する方法
  11. TortoiseGitについて
  12. gitの勉強方法について

msysGitのインストール

下記URLよりインストーラをダウンロードします。
http://msysgit.github.io

本記事作成時点の最新版は Git-1.7.9-preview20120201.exe です。

インストーラで注意する点は下記の通りです。

Select Components

インストールするコンポーネントを選択します。

Git Bash Here と Git GUI Here にチェックを入れます。
Quick Launch と Desktop アイコンはお好みで。私はチェックをはずしました。

Adjusting your PATH environment

WindowsのPATHにGitのコマンドのPATHを自動で追加するかどうかを設定します。

msysgit2

Git BashやTortoiseGitからGitを使用する方は、一番上の Use Git Bash onlyを選択すればOKです。

Vim,IDEなどの開発エディタやWindows標準のコマンドプロンプトからgitコマンドを使用したい方は、真ん中の Run Git from the Windows Command Prompt を選択します。よく分からない方は、こちらを設定することをおすすめします。

一番下の Run Git and included Unix tools from the Windows Command Prompt を選択すると、msysGitに同梱されているmsysにPATHが通り、コマンドプロンプトから ls, rm, grep などのUnixコマンドを使用できるようになります。もちろん、Gitコマンドも使用できます。お好みでどうぞ。

Configuring the line ending conversions

checkout, commit した際の改行コードを指定します。

msysgit3

私は Checkout as-is, commit Unix-style line endings を選択しました。ファイルの改行コードが、checkout 時はそのままで、commit 時にLFに自動変換されます。

gitで管理するファイルは、改行コードがLFではない場合にいろいろ問題が起きるようです。Windowsでファイルを扱っていると、改行コードがうっかりCRLFになってしまうことあるので、予防のためこの設定にしました。

ここで設定した内容は、C:\Program Files (x86)\Git\etc\gitconfig に記述されます。後から.gitconfigで上書き可能です。

TortoiseGitのインストール

WindowsでGitを使う場合はTortoiseGitが便利です。今回の記事ではTortoiseGitの使い方には触れませんが、インストールだけしておきます。Windows環境ではなんだかんだでTortoiseGitを使う機会が多いです。tortoiseSVNと同じくエクスプローラに統合されていて、使いたいときすぐに使えるのが便利です。

下記URLよりインストーラをダウンロードします。
http://code.google.com/p/tortoisegit/downloads/list

本記事作成時点の最新バージョンは1.7.7.0です。私の環境は64bitなので、64bit版をダウンロードしました。

インストーラで注意する点は下記の通りです。

OpenSSHを選択する

tortoisegit-ssh

msysGitにOpenSSHが入っていますので、SSHクライアントは OpenSSH を選択します。

githubにリポジトリを作成する

インストールしたgitを設定する前に、githubにリポジトリを作成します。アカウントがない方はアカウント登録します。
https://github.com/join

アカウントの登録が完了したら、ログインし、New repository からリポジトリを作成します。リポジトリ名は Hello-World とします。リポジトリ名はハイフンで意味の区切りを表現する人が多いです。

SSHかHTTPSどちらかを利用してgithubのリポジトリに接続する

githubのリポジトリにはSSHかHTTPSのどちらかで接続することができます。両者の違いを簡単に説明します。

SSHで接続

SSH接続のメリットは、ファイルのpushの際にパスワードを入力する必要がなくなることです。便利ですが、SSHの公開鍵と秘密鍵を自分で作成し、ローカルマシンに秘密鍵を、githubに公開鍵をそれぞれ配置する必要があり、少々敷居が高いです。

HTTPSで接続

HTTPSで接続するメリットは、手軽さです。ユーザー名とパスワードで認証を行うため、簡単にリポジトリにアクセスできます。転送速度もSSHより早いです。ただし、ファイルのpushの際に毎回ユーザー名とパスワードを入力する必要があり面倒です。一応、小細工を使って入力を省略する方法もあります。記事の最後の方で紹介しています。

で、結局どっち?

私のオススメはSSHです。githubもSSHを推奨しています。以下よりSSHで接続する方法を紹介しますが、難しい!と思う方はひとまずHTTPSでつないでみてください。HTTPSで接続する方はgithubにリポジトリを作成するから読み進めてください。

SSH秘密鍵と公開鍵の作成

SSHでgithubに接続するための秘密鍵と公開鍵を作成します。すべてのプログラム > Git > Git Bash を起動し、下記コマンドを入力します。

$ ssh-keygen -t rsa -C "github_ssh_key"

-C の後ろの文字列はコメントです。自由に変更してください。入力後、対話形式で処理が進みます。基本的にはデフォルトで問題ありません。

途中でパスワードの入力を求められます。ここでパスワードを入力すると、githubにpushする際にパスワードを求められるようになります。

コミットのたびにパスワードを入力するのが面倒だったので、私はパスワードを空欄にしました。セキュリティをより強固にしたい方は、パスワードを入力してください。

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/hoge/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/hoge/.ssh/id_rsa.
Your public key has been saved in /c/Users/hoge/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

完了するとホームディレクトリ(Windows7ではC:\Users\ユーザー名\)の直下に .ssh ディレクトリが作成され、その中に id_rsa(秘密鍵) と id_rsa.pub(公開鍵) が作成されます。

SSH公開鍵をgithubに登録する

上記で作成したSSH公開鍵をgithubに登録します。

githubにログインし、Account Settings > SSH Keys > Add SSH Key と進みます。

titleには任意の名前を入力、Keyにはid_rsa.pubをの中身を貼り付けます。

github-ssh-key

ローカルPCの秘密鍵を他のPCに配布すると、別のPCからもgithubのリポジトリにアクセスできます。

SSH公開鍵の設定確認

Git Bash を起動し、下記コマンドを入力します。

$ ssh -T git@github. com

初回アクセス時は確認を求められますのでyesを入力します。Hi ユーザー名! のメッセージが表示されれば公開鍵の設定はOKです。

Gitの設定

リポジトリにpushする前にGitの初期設定を行います。まずは user.name と user.email を設定します。

Git Bash を起動し、下記のコマンドを入力します。

$ git config --global user.name "githubに登録したユーザー名"
$ git config --global user.email "githubに登録したメールアドレス"

ユーザー名には、githubに登録したユーザー名を、メールアドレスにはgithubに登録したメールアドレスを入力します。

入力内容を確認するには下記のコマンドで。

$ git config -l

...
user.name=入力したユーザー名
user.email=入力したメールアドレス
...

ホームディレクトリに .gitconfig というファイルもできているはずですので、そのファイルを開いて確認することもできます。

ローカルからgithubリポジトリにpushしてみる

作成したリポジトリにファイルを送ってみましょう。以下では、SSHとHTTPSの両方の接続方法を紹介しています。

Git Bash を起動し、下記のコマンドを入力します。

githubからcloneする

ホームディレクトリ直下にgit cloneしてローカルリポジトリを作成します。cloneする時にSSHで接続するか、HTTPSで接続するか決めます。もちろん、後から変更することもできます。Git Bash を起動し、下記のどちらかのコマンドを入力します。

$ cd ~

" SSHで接続したい場合は以下のコマンドで!
$ git clone git@github. com:ユーザー名/Hello-World.git

" HTTPSで接続したい場合は以下のコマンドで!
$ git clone https://github. com/ユーザー名/Hello-World.git

git cloneの引数に指定したURLはgithubからいつでも確認できます。

github-remote-url

READMEファイルを作成する

ホームディレクトリ直下にHello-Worldフォルダができていますので、中に移動し、READMEファイルを作成します。

$ cd Hello-World
$ touch README

コミットする

作成したREADMEファイルをコミットします。git add はファイルをステージングエリアに追加するコマンドです。

$ git add README
$ git commit -m 'first commit'

githubにファイルを送信する

$ git push -u origin master

SSHで接続する場合で、公開鍵を作成する際にパスワードを入力した方は、push する時にパスワードを求められますので、公開鍵を作成した時のパスワードを入力します。

HTTPSで接続する場合、ユーザー名とパスワードを求められます。githubのユーザー名とログインパスワードを入力します。

push できたらgithubのリポジトリを確認します。READMEファイルが登録されているはずです。

HTTPSのユーザー名とパスワード認証を省略する方法

HTTPSでgithubに接続する場合、ユーザー名とパスワードの認証が必要ですが、ベーシック認証ですので、小細工を使って認証を省略することができます。セキュリティ上あまりオススメしません。自己責任でどうぞ。

_netrcファイルを作成する

_netrcファイルにユーザー名とパスワードを記述すると、設定されたホストにアクセスするときにそのユーザー名とパスワードを使用します。_netrc は、ホームディレクトリ(Windows7ではC:\Users\ユーザー名\_netrc)に配置します。_netrcは、UNIX系OSでは.netrcに相当します。

machine github.com
login ユーザー名
password パスワード

URLにユーザー名とパスワードを記述

URLにユーザー名とパスワードを記述して認証することができます。ここまで読み進めた方はoriginにURLを設定済みでしょうから、下記のコマンドでoriginを変更してお試しください。

$ git remote set-url origin https://ユーザー名:パスワード@github.com/ユーザー名/Hello-World.git

設定の確認は下記コマンドで。

$ git remote -v

なお、上記のgit remote set-url コマンドで、HTTPSとSSHの接続切替もできます。

"SSHに変更したい場合
$ git remote set-url origin git@github. com:ユーザー名/Hello-World.git

"HTTPSに変更したい場合
$ git remote set-url origin https://github.com/ユーザー名/Hello-World.git

TortoiseGitについて

TortoiseGitはGUIでGitを操作することができるツールです。日本語化はせず、英語版で使ったほうがCUIとの関連性もつかみやすいです。

CUIによるGitの基本操作が分かれば、GUIへの対応はすぐできます。先にCUIで基本を覚えると良いです。

gitの勉強方法について

私はこちらの書籍でgitを勉強しました。入門gitは、基本的な使い方から、gitならではのブランチを気軽に作成してバージョン管理する方法まで学べます。入門編としてオススメです。
基本が分かると入門gitではすぐに物足りなくなりますので、次のステップアップにはgitポケットリファレンスがオススメです。

 ツイート 21  シェア 9  Google+1 2  Hatena 42