unfuddleのgitリポジトリにpushするまでのメモ

先日から使い始めた、gitのメモです。

1. SSHの公開鍵を登録する

プロトコルに関して

Unfuddlesvnリポジトトリはwebdavを使ってhttp*1でやりとりすることになりますが、gitリポジトリではgitプロトコルを使います。

gitプロトコルを使うには、SSH鍵で認証を行う必要があります。

1-1.ターミナルで下記コマンドを実行し秘密鍵と公開鍵を作成します。
ssh-keygen -t rsa

実行するとパスフレーズを聞かれますが、パスワードを使用しない(鍵のみで認証)のでなにも入力せずエンターを押します。

そうすると鍵作成・表示されるので、クリップボードにコピーします。
あとから参照したい場合は、下記ディレクトリに公開鍵が作成されています。

 ~/.ssh/id_rsa.pub

UnfuddleのPeopleタブ→ユーザの編集→Public Keys→New Public Key...から登録画面を表示します。

先程作成した、公開鍵を登録します。*2

これで、Unfuddleリポジトリをgitプロトコルで使えるようになります。
GitHubでもほとんど同じ流れでした。

windowsではputtygen(鍵作成)とpagent(鍵利用)を使う形になると思います。

1.2 gitリポジトリを作成する

管理画面からgitリポジトリ作成します。


1.3 ローカルにリポジトリを作成する

Unfuddleのヘルプの通りローカルにリポジトリ作成ととunfuddleと関連付けを設定します。

$ git init
Initialized empty Git repository in /unfuddle/hogereponame/.git/
$ git remote add unfuddle git@guyon.unfuddle.com:guyon/hogereponame.git
$ git config remote.unfuddle.push refs/heads/master:refs/heads/master

次に初期ファイルを登録します。*3
gitはコンテンツベースの仕組みになっているので、なにかしらファイルが必要とのことです。
空ディレクトリも作成できません。

$ touch .gitignore
$ git add -A
$ git commit -a -m "first commit"


コミットはローカルのリポジトリに対して行います。
リモートのリポジトリに変更を反映させたい場合はpushコマンドを使用します。

$ git push unfuddle master

これで、初期登録までの作業は完了です。
初期ファイルがコミットされていない状態でpushしようとした場合は下記のようなエラーが発生しました。

error: src refspec master does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@guyon.unfuddle.com:guyon/hogereponame.git'

まとめ

  • まずはgit関係のドキュメントや情報を見ておくべき
    • git勉強会の資料やレポートがすごく役にたった。
  • pushでまとめてコミットを反映できるのでunfuddleの回線の遅さが気にならなくなった
  • 分散型についてうれしさが少しわかった気がする
    • 「分散にするほどの規模じゃないよ」とかそういう事じゃなくて、管理とか仕組みが個人レベルでも便利な気がした。(直感)

マージとかブランチとかその辺も覚えていきたいなぁ。

*1:Basic認証を使って

*2:表示では複数行に見えますが実際は一行です。

*3:importコマンドを使ってもいいのかも