unfuddleのgitリポジトリにpushするまでのメモ
先日から使い始めた、gitのメモです。
gitに関して参考にさせて頂いた内容
1. SSHの公開鍵を登録する
プロトコルに関して
Unfuddleのsvnリポジトトリは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.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の回線の遅さが気にならなくなった
- 分散型についてうれしさが少しわかった気がする
- 「分散にするほどの規模じゃないよ」とかそういう事じゃなくて、管理とか仕組みが個人レベルでも便利な気がした。(直感)
マージとかブランチとかその辺も覚えていきたいなぁ。