やぁやぁ、村部です。
分散バージョン管理はBazaarをずっと使っていましたが、世の流れには逆らえず現在やっているプロジェクトではGitを使うことにしました。
ソースコードを管理するのであればGitは強力ですしね。EclipseでもNetbeansでも使えるのも魅力。
ただし、中央リポジトリはSubversionです。ドキュメントも同じリポジトリ管理したいのでSubversionが便利なのです。
既に社内でgit-svnでの運用実績もありますので安心(Bazaar使いたい時はbzr-svnでやれますしね)。
社内Git派閥の方に聞いた所「基本trunkでやるなら下記覚えておけばOK」とのこと。
## ローカルでのコミット
git add .
git commit
## SVNへのコミット
git svn rebase #一旦SVNのリポジトリから取り込み
git svn dcommit #ローカルの変更を反映
しばらく使ってみて不便に感じたのが git commit 直後でないと git svn rebase や git svn dcommit ができないこと。すこしでも修正しているとだめ。 タースーケーテー
「git stash があるよ」
変更を退避するコマンドだそうです。てなわけでSVNへのコミットの基本はこんな感じ。
git stash save -u #commitしてない変更を退避
git svn rebase
git svn dcommit
git stash pop #退避から取り出し
git stash save の -u オプションは –include-untracked の省略形。add していない変更も退避します。
「このオプションを付けてないとよくわからないトラブルになりがち」だそうなのでつけときましょう。
以上、これだけで一応使える git-svn 入門でした。
※2012-03-21 追記
git stash save の -u オプションについてですが、新しいファイルを作成、編集してるときにadd前にこのオプションをつけて save すると pop 時にコンフリクトすることが多いです。その場合コンフリクトを解消するにはコンフリクトしているファイルをすべて削除(または他の場所に移動)して再度 pop します。正常に pop する前に git stash drop すると編集していたファイルを失って泣くことになるのでご注意を。
ということで一概に -u をつけたほうがいいとは言えないようです。
タグ: Git