SVNとgitの違いは?

  • SVNのリポジトリを2つ持つ
  • 1つはローカルHDDに造った自分専用のリポジトリ1
  • もう1つのリポジトリ2をサーバーにつくる
  • ローカルのSVNリポジトリ1は自分のみ使う(コミット)
  • ローカルで満足のいったリビジョンをエクスポート
  • リポジトリ2から最新の状態に更新する(プル)
  • エクスポートしたファイルをリポジトリ2にコミットする(プッシュ)
  • ローカルでのバージョン管理だけならSVN的な使い方でコミットだけで運用可能

コミットしてプッシュする

#ref(): File not found: "gitImage1.png" at page "git"

  • ローカルでとりあえず保存しておきたいリビジョンは好きなタイミングでコミットしていい
    • SVNではコミットしてしまうとプロジェクトに正式に提出してしまうことになる
      • そのためローカルで大きな変更をともなうテスト中のコミットは危険である
      • あとで元に戻したいのでとりあえず保存しておきたい場合のコミットもプロジェクトに影響がでる
  • なので、gitで便利なのはローカルのコミットとサーバーへのコミット(プッシュ)の2段階が存在していること
    • SVNでローカルのリポジトリとプロジェクトで共用しているリポジトリを2種類運用するのに似ている
  • うまくプロジェクトに参加させたいリビジョンができたらサーバーにコミット(プッシュ)する
  • でもその前に、サーバーから最新のソースを持ってきておく必要があるよね(プル)

プルしてコミットする

#ref(): File not found: "gitImage2.png" at page "git"

  • サーバーの最新状態をプルして持ってくる
    • そのあとで自分のソースをコミット、この辺りはSVNと一緒
  • サーバーの最新状態をすべて持ってきて上書きするのを「クローン」
    • ローカルの状態がおかしくなったりしたらとりあえずクローンして最新にしちゃう

簡単な手順

ローカルリポジトリの設定

  • 登録したいソースコード一式を用意する
  • 適当な場所に(ローカルの)リポジトリを作成する
  • SourceTreeで「リポジトリの作成」を行いリポジトリの場所を設定する
  • そのリポジトリに「ソースコード一式」を放り込む
  • コミットする
    • これでローカルのリポジトリによるファイル管理は完成

リモートを設定する

  • BitBucketにブラウザでログインする
  • 新規リポジトリを作成する
    • これでサーバー上にリポジトリができる
  • SourceTreeでリモートの設定を行う
    • さっき作ったリモートリポジトリのURLを設定する
      • https://ユーザー名@bitbucket.org/ユーザー名/リポジトリ名.git
  • プッシュする
  • これでPCが壊れても安心!

git使ってみてどうなのか

  • まだ慣れていないせいかSVNに戻りたいTT
  • SVNクライアントであるTortoiseSVNがわかりやすすぎた
    • エクスプローラー連動であること
    • シンプルであること
    • その前のCVSが面倒だったこと
    • VSSのロックによる仕組みの弱点をカバーできていたこと
  • TortoiseGitは評判が良くないのでまだ試していない
  • gitクライアントのSourceTreeを使っているが、日本語環境が良くない
    • Windows環境ではコミット時にメッセージが日本語で書けない
    • mac用では日本語環境に特に問題ないが、SourceTreeがTortoiseSVNほど直感的でないのでまだ慣れない
  • サーバー側にリポジトリを作る手間が圧倒的にラク
    • お客さんや遠隔地のヒトとリポジトリを簡単に共有できる
      • SVNの場合はセキュアなしくみを自前で構築する必要がある
  • BitBucketなどのAtlasianのサービスを使うことで容量の制限はあるもののとりあえずリポジトリの共有に問題がない

GITの留意点、覚書など

git留意点