2011/02/17

githubではじめるgit

本日会社にて、「gitむりっす、コマンドラインがっ」って言われたんで
とりあえず使うだけでも使えるように、少しまとめてみようかなって。

何を題材にしようかとおもったら、とりあえず、git-svnからとかだと
いろいろ紛らわしいので、まずはただの git からいこう!と。

世の中には便利なサービスがあって、githubという、自分のリポジトリを
タダでもてるという素敵なサービスがあるんです。
まずは、それを使って、最初のコミットまで。
(実際は、チュートリアルがあるのでそのとおりなんだけど)

対象は、Windowsをつかってて、git使いたいけど、試すのが・・・とか
コマンド難しくて、なに覚えていいかわかんねぇんだけど・・・な人です。

ゴールは、とりあえず一連の操作できるようになったらいいね!ってことで

githubに登録する

https://github.com/ にいくと、ロケーるが日本であれば
上のほうに、「日本語で使う?」って出るので、「はい」と素直に。

日本語になるんで、ど真ん中のでかい新規登録ボタンを押します。

image

そしたら、とりあえずお金使いたくないので、
公開リポジトリを作ることにします。

image

一番上に、オープンソース用無料プランがあるんで、ここを選びます。

image

必要な情報を入れて、ぽちっとアカウントの作成を押します。

これで登録は完了。画面はダッシュボードへ移動します。

リポジトリを作ってみる

登録できたんで、次はリポジトリを作ってみます。

まず、右端に

image

おまえのリポジトリねーから って言われてるので、
自分のリポジトリ作ります。

新しいリポジトリ のボタンを押して、リポジトリ作成画面へ
(ちなみに、下の「リポジトリを作りましょう」をクリックしても同じ画面です)

image

リポジトリの情報を入れて、作ってください。

最初のやつなんで、プロジェクト名は自分の名前。
説明は、「俺の伝説の始まりだぜ」とかで。
ホームページはあれば入れとくと、リポジトリのページに表示されたりとか

あとで修正できるので、optional部分(説明、ホームページ)は適当で大丈夫

アクセスできるのは、「誰でも」で。アップグレードするとお金かかるんで。

これでリポジトリが完成。今度はクライアント側の設定をしましょう。

gitを使うための、クライアント側設定

今回は、Windowsホストを対象にしてるので
gitはcygwinでやりましょう。
インストール方法はここを参考に。

gitとopen-sshがインストールできたら、cygwinのコンソールを開いて
とりあえず git用のフォルダを作ってそこに入っておきます。

$ mkdir git
$ cd git

まずは、自分のユーザー名とメールアドレスを共通設定に
書き込んでおきます。

$ git config --global user.name "ユーザー名"
$ git config --global user.email "メアド"

ちなみに、--global で、共通設定 付けない場合は、
リポジトリ固有の設定になります。

次に、一番引っかかる、鍵の作成をします。

open-ssh をつかってやるんですが、まず仕組みを。

鍵を作ると、公開鍵と秘密鍵が出来るんですが、公開鍵のほうを、
githubに登録しておくことで、クライアントを認証します。

これをやらないと、コミットすることが出来ませんので注意です。

で、やり方ですが、ここが参考になります。

まず、鍵を作ります。

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

インストール場所聞いてくるので、普通はそのままでOKです。
前に作ったことある場合は、上書き確認が出ます。
大事な鍵の場合もあるので、上書き確認でたら、バックアップとってから
もう一度やり直してください。

パスフレーズを聞かれますので、必要であれば入力してください。
必要なければ、何もいれずにEnter。再入力きかれるので、Enter
(パスフレーズ設定した場合はそれを入れてEnter)

そうすると、鍵が出来上がります。

公開鍵側を、githubに設定するので、鍵のフォルダに移動します。

場所は、先ほど鍵作成時に指定した場所(通常は、ホーム/.ssh)です。

ここに、「id_rsa.pub」というファイルがあるので、これをcatします。

$ cat id_rsa.pub

そうすると、公開鍵の情報が出てくるので、とりあえずクリップボードに
コピーしておきます。

次に、githubのページに移動しましょう。

右上のメニューから

image

アカウントの設定を選んで、その画面の

image

SSH公開鍵 を選択、隣の「別の公開鍵の追加」をクリックします。

image

タイトルと、キーを聞かれるので、タイトルには、

メールアドレスとかで分かりやすく。

キーの部分に、先ほどcatで表示した公開鍵を丸々貼り付けます。

終わったら、キーの追加を押すと、正常に完了すれば

image

こんな感じで、登録されます。

これで鍵の登録は完了、無事、リポジトリに
アクセスできるようになったわけです。

実際にリポジトリにアクセスしてみようか

リポジトリにアクセスできるようになったので、実際にファイルを入れましょう

まず、githubの画面でダッシュボードに戻って、右下の自分のリポジトリを
クリックしましょう。

手順が画面に表示されていると思うので、そのとおりに行きます。

  1. mkdir リポジトリ名
    まず、リポジトリになるフォルダを作ります
  2. git init
    リポジトリとして使うために、gitに .gitフォルダを生成してもらいます。
  3. touch README
    コミットするファイルがないとこまるので、touchで適当に作ります
  4. git add README
    コミットするファイルとして、README を追加します。
  5. git commit -m "first commit"
    コミットメッセージを first commit でコミットします。
    -m で直接メッセージ入れてますが、別に付けないで
    エディタでメッセージ編集してもOKです。
    エディタの場合は、コミットメッセージを書き込み「保存」して、
    エディタを閉じることでコミットされます。保存してない場合は
    コミットされませんので注意
  6. git remote add origin <githubの読み書きできるURL>
    originって名前で、指定したアドレスにアクセスするよーって命令
    origin自体は特殊な名前であってうんぬんかんぬん。
    とりあえず、いま作ってるリポジトリは、指定したURLと、
    関連づいてるんだ!っていう設定
  7. git push origin master
    origin で設定したリモートのところの、masterってブランチに
    コミット内容をpushします!

こんな感じで、最初のリポジトリ作成まできました。

githubの画面

image

こんな風に、コミットした感じが見えますかね?

普通、こんな感じでつかうよね?っていう流れ

リポジトリもできて、最初のファイルも出来たんで、
次に、自分の作ったファイルとかをコミットしていく流れをやってみましょう

まずは、作業用のブランチをきりましょう。
masterブランチは汚さないようにするのが一番です。
ネットワーク経由の動作でコンフリクトすると面倒なので。

作業用にwoking というブランチを作ってみます。

$ git branch working

作ったブランチに移動します

$ git checkout working

ここのあとは、ファイル作ったりして、追加したり
開発らしいことします。

$ git add <ファイル名とか . とか。 再帰的に探してくれるよ!>

いらないファイルは、消してみたり
(手で消すと、整合性が取れなくなるので、gitのコマンドで消してね)

$ git rm <ファイル名>

一通り終わったら、commitしましょう

$ git commit

-m "メッセージ" でメッセージ直接いれてもいいですよ。

コミットが終わったら、

$ git log

でコミット情報を確認したり

$ git status

で漏れを確認したり。

$ gitk

gitkの素敵な表示で満足したり。

ちゃんとcommitできてそうなら、masterブランチに戻りましょう

$ git checkout master

ここから、サーバーにアップロードする準備です。

サーバーから、最新の情報を拾ってmasterブランチを更新

$ git pull origin master

最新の状態になったら、自分の変更(working)をマージしましょう

$ git merge working

変更が反映されてることを

$ gitk

とかで確認してOKそうなら、リモートへ送り込みます

$ push origin master

あとは繰り返し。

ここまでできたら、あとは繰り返すだけですよね。

最後に。

自分のリポジトリとかを、

$ git clone <リポジトリのurl>

とかでやったぱあいは、pushとかpullは、クローンしたところが元になるので
push/pullの origin やら master やら、指定しなくても動いたり。
(リモートが自動設定されるんだっけ?この辺よくわかってない)

色々やってみるのが一番早いと思いますが・・・

迷ったら、git help もありますし。聞けば誰かが。

追記

git clone すると、configに各種情報が自動で入るんですね。
なので、指定しなくても動くと。

最初の作成だけやったら、clone で作り直しちゃったほうが楽かも。とおもた

0 件のコメント:

コメントを投稿