Windowsにmsysgitをインストールしてgithubにpushができるまでを紹介します。
2013年7月30日追記
SourceTree に移行しました。
-
WindowsのGitクライアントSourceTreeのインストールと初期設定
Windows の Git クライアント SourceTree がいい感じです。 私はこれまで、Windows の Gi ...
続きを見る
動作確認環境
- Windows7 64bit
- msysGit 1.7.9
- TortoiseGit 1.7.7.0 64bit
目次
- msysGitのインストール
- TortoiseGitのインストール
- githubにリポジトリを作成する
- SSHかHTTPSどちらかを利用してgithubのリポジトリに接続する
- SSH秘密鍵と公開鍵の作成
- SSH公開鍵をgithubに登録する
- SSH公開鍵の設定確認
- Gitの設定
- ローカルからgithubリポジトリにpushしてみる
- HTTPSのユーザー名とパスワード認証を省略する方法
- TortoiseGitについて
msysGitのインストール
下記URLよりインストーラをダウンロードします。
本記事作成時点の最新版は 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を自動で追加するかどうかを設定します。
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 した際の改行コードを指定します。
私は 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を選択する
msysGitにOpenSSHが入っていますので、SSHクライアントは OpenSSH を選択します。
githubにリポジトリを作成する
インストールしたgitを設定する前に、githubにリポジトリを作成します。アカウントがない方はアカウント登録します。
アカウントの登録が完了したら、ログインし、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をの中身を貼り付けます。
ローカル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からいつでも確認できます。
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で基本を覚えると良いです。