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

2012年4月1日

git-logo

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

2013年7月30日追記
SourceTree に移行しました。

sourcetree-main
WindowsのGitクライアントSourceTreeのインストールと初期設定

Windows の Git クライアント SourceTree がいい感じです。 私はこれまで、Windows の Gi ...

続きを見る

動作確認環境

  • 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について

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に相当します。

_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で基本を覚えると良いです。

-技術ブログ
-