2010年7月30日金曜日

Windows で GitHub の利用 - msysgit, TortoiseGit を使って

0. 目次

  1. Git の特徴
  2. Windows で msysgit
  3. GitHub でリポジトリを作成
  4. 日本語の設定
  5. Git を使うためのクライアント - TortoiseGit
  6. Git のコマンドを使ってみる

 

1. Git の特徴

SnapCrab_No-1007ソースコードの管理に GitHub を利用してみる。

Git - Wikipedia とは、

プログラムなどのソースコード管理を行う分散型バージョン管理システム。動作速度に重点が置かれている。Linuxカーネルのソースコード管理を目的として、リーナス・トーバルズによって開発された。

特徴を押さえておく。

Gitは、arch等にも採用される分散リポジトリをサポートしており、

  • 中央リポジトリからコピーする
  • コピーしたリポジトリを編集し、コンテンツの修正、追加、削除を行う
  • ローカルへコミットする
  • 中央リポジトリへ変更内容を反映させる

という形で行われる。

リポジトリへのアクセスは

  • ローカル
  • WebDAV
  • Git 独自プロトコル
  • rsync
  • ssh

を用いる(書き込みができるのはローカル、WebDAV および ssh)。

(同上より)

分散バージョン管理なので、基本的な考え方として、

… ローカルのリポジトリ(master)をリモートのリポジトリ(origin)にプッシュ、つまり反映させます。

(せっかちな人のための git 入門 - git をインストールし、共同で開発できる環境を整えるまで : 僕は発展途上技術者 より)

詳しくは以下を参照。

 

2. Windows で msysgit

SnapCrab_No-1013Windows で git を使うために 「github を Windows で使ってみる | Numb.」 を参考にした。

をダウンロードしてインストール。

( はじめて msysgit を設定したときは、msysGit-netinstall-1.5.4-rc0-preview20071217.exe を利用した。今回は Git-1.7.0.2-preview20100309.exe 。)

とっても優しい github の使い方 - ¬¬日常日記 によると、

あ、私のようなgit初心者の方は、まず最初に … 名前とメールアドレスを設定しておいて下さい。これを忘れるとマシン名とかがコミットログに残って恥ずかしい感じになります。

最初に、名前とメールアドレスを設定しておく。

git config --global user.name "名前"
git config --global user.email メールアドレス

これにより、環境変数 %HOME% 以下に .gitconfig ファイルが作成された。

 

3. GitHub でリポジトリを作成

  1. SnapCrab_No-1014 Your Dashboard – GitHub において Create a Repository により新規にリポジトリを作成。
  2. 最低限 Project Name を記述し、 Create Repository ボタンを押す。
  3. この後に行うコマンドライン上での作業が表示される。
  4. Global setup については上記で既に行なったので、それ以降の作業を行う。

 

SSH-key の作成

リポジトリへアクセスするための認証用に SSH-key を作成。

先ほどインストールした Git Bash を起動して、

ssh-keygen -t rsa –C "メールアドレス"

( Help.GitHub - Generating SSH keys (Win/msysgit) より )

これにより環境変数 %HOME% 以下に .ssh フォルダが作成され、その中に

  • id_rsa
  • id_rsa.pub

の二つのファイルができる。

この内、id_rsa.pub の内容を Your Account - GitHub の SSH Public Keys に設定。

 

git remote コマンドにより、リモートのリポジトリを指定

上記の「コマンドライン上での作業」における Next steps: には、次のように書かれていた。

mkdir プロジェクト名
cd プロジェクト名
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@github.com:ユーザ名/プロジェクト名.git
git push origin master

ファイル README を追加した後、コミットして、プッシュするという作業の流れ。

プッシュする前のコマンド git remote add は、git-remote(1) によると、

git remote add [-t <branch>] [-m <master>] [-f] [--tags|--no-tags] [--mirror] <name> <url>

ここでの add の意味は、

add

Adds a remote named <name> for the repository at <url>.

name と url を結び付ける。

git push では、上記で設定した name を指定。

git-push(1) の Examples によると、

git push origin master

Find a ref that matches master in the source repository (most likely, it would find refs/heads/master), and update the same ref (e.g. refs/heads/master) in origin repository with it. If master did not exist remotely, it would be created.

初回の実行では master がリモートに作成される。

 

4. 日本語の設定

を参考にして、日本語の設定を行う。

C:\Program Files\Git\bin に lessnkf を配置。

C:\Program Files\Git\etc\inputrc に以下を記述。

set convert-meta off
set meta-flag on
set output-meta on
set kanji-code utf-8

(WindowsでのGit環境構築とその注意点 より)

C:\Program Files\Git\etc\profile に以下を追記。

export GIT_EDITOR="'<使用するテキストエディタのパス>'"
export GIT_PAGER="nkf -s | less"

このとき、テキストエディタのパス中の「\」は「/」に、「C:」は「/c」に置き換えて指定する。

(同上より)

これにより、ソースコードが変更されたフォルダで、Git Bash を起動 (右クリック > Git Bash) し、

git diff ファイル名

を実行すると、日本語が表示される。

ファイルの中身を見たいときは、

nkf –s ファイル名 | less

 

5. Git を使うためのクライアント - TortoiseGit

SnapCrab_No-1006コマンドライン上での操作ではなく、GUI で Git を扱いたいなら TortoiseGit tortoisegit を使う。TortoiseSVN に慣れている場合は、これを使うのが良い。

Download – tortoisegit より、「本体」と「言語パック」をダウンロードする。

 

日本語化

言語パックをインストールした後、

  • TortoiseGit > Settgings > General > TortoiseGit > Language:

において、日本語を選択する。

SnapCrab_No-1004

 

SSH

を参考にして SSH を設定。

TortoiseGitの設定ダイアログを開き、「Network」の「SSH client」にmsysgit付属のssh.exeを指定する。

上記では 「OpenSSHの秘密鍵をPuTTY形式に変換して使う」 方法も書かれている。

 

6. Git のコマンドを使ってみる

まずは、基本的なところで 「github を Windows で使ってみる | Numb.」 より、

git add README
README というファイルをリポジトリに追加
git commit -m ‘first commit’
ローカルのリポジトリに変更を適用 ‘first…’ のところはコメント
git push origin master
リモートリポジトリに変更を適用( master を origin に push )
( cd hogehoge )
git pull origin master
(ローカルリポジトリのディレクトリに移動して)リモートリポジトリの変更をローカルリポジトリに適用

その他、解説しているサイトを試して慣れる。

コマンドの解説としては以下を参照。

 

チェックアウト

既にリポジトリにソースが存在し、チェックアウトするには、予め GitHub で SSH の URL コピーしておく。

Git Bash において、

git clone git@github.com:ユーザ名/プロジェクト名.git

このとき公開鍵を作成したときのパスワードを入力。

TortoiseGit を使う場合は、適当なフォルダで右クリック > Git Clone… 。github にある SSH の URL を入力して Web を選択。

 

コミットとプッシュ
  1. TortoiseGit を使うなら、ソースコードを変更した後、右クリック > Git Commit –> “master”…
  2. ローカルの変更をリモートに反映させるには、右クリック > Tortoise Git > Push

 

ブランチの削除

間違えて作成したブランチを削除したい。

リモートのブランチの削除は
% git push origin :experimental

( GitHubをRemote Repoとして、MacにインストールしたGitから使ってみる:Goodpic より)

git-push(1) によると、

git push origin :experimental

     Find a ref that matches experimental in the origin repository (e.g. refs/heads/experimental), and delete it.

Git Bash を起動し、上記 experimental の代わりに、GitHub のリポジトリのページにある `Switch Branches’ に表示される `削除したいブランチ名’ を入れて実行する。