A. リモートsvnリポジトリからのクローン
1. 標準ディレクトリ構成の場合 (trunk, branches, tags)
1 |
$ git svn clone --prefix=svn/ -s http://www.sample.com/my_repository |
2. 非標準ディレクトリ構成の場合
1 |
$ git svn clone --prefix=svn/ --no-minimize-url http://www.sample.com/my_repository |
--prefix
をつけたとき
1 2 |
$ git branch -r svn/trunk |
1 2 3 |
$ git branch -a * master remotes/svn/trunk |
--prefix
をつけないとき
1 2 |
$ git branch -r trunk |
1 2 3 |
$ git branch -a * master remotes/trunk |
B. 更新処理のフロー
1. リモートリポジトリとのリベース
1 |
$ git svn rebase |
2. ワーキングブランチの作成とチェックアウト
1 |
$ git checkout -b my_working_branch |
1 |
$ git checkout -b my_working_branch svn/my_working_branch |
※ git svn cloneにおいてprefix(svn/)をセットした効用
3. ワーキングブランチでの更新作業
1 2 3 |
$ vi hello.c $ git add hello.c ... |
4. ワーキングブランチのコミット
1 |
$ git commit -m "fix hello.c" |
5. ローカルマスターブランチへの切り替え
1 |
$ git checkout master |
6. ローカルマスターブランチへのマージ
1 |
$ git merge --no-ff --no-commit my_working_branch |
- –no-ff
fast-forwardを禁止して必ずマージコミットを作成する。ローカルリポジトリには変更履歴がブランチとして残り、リモートリポジトリに対してはマージコミットのみが反映される。
- –no-commit
- コミットを保留する。(マージ)コミットが2回発生することを避ける。
7. ローカルマスターブランチのコミット
1 |
$ git commit -m "bug-fix: xxx" |
8. リモートsvnリポジトリへのコミット
1 |
$ git svn dcommit |
9. ワーキングブランチの削除
1 |
$ git branch -d my_working_branch |
C. そのほか
ローカルブランチの確認
1 |
$ git branch |
1 |
* master |
リモートブランチの確認
1 |
$ git branch -r |
1 2 3 4 |
svn/xxx_1.0.0 svn/tags/1.0.0_release svn/tags/1.0.1_release svn/trunk |
すべてのブランチの確認
1 |
$ git branch -a |
1 2 3 4 5 |
* master svn/xxx_1.0.0 svn/tags/1.0.0_release svn/tags/1.0.1_release svn/trunk |