git-svnを使った開発の手順

未だにSubversionの案件があって泣きそうです。
もうコマンド覚えていないのでgit-svnで対応しますが、流れを決めておかないと大変なので自分の作業をまとめときます

チェックアウト

ただしsvnをちゃんと使ってない案件、trunkがない場合など・・の場合はこのコマンドでは対応できない。。。。

するとcheckoutができる

git-svn の使い方メモ

trunkで開発する

svn/trunkをチェックアウトする

gitのローカルブランチで開発する

普通にブランチを作る

コミット

変なファイル名を使っているとaddが出来ないのでそういう時はこちらで強引に対応する。。

日本語ファイル名は大丈夫だけど半角スペースはダメです。。。。。

Subversionにマージにする

そのままマージするとコミットログが大量になってしまうので、squashで1個にまとめる

ただしSubversionで余計なものまでリポジトリに追加されている(Changes not staged for commitが残っている)場合
エラーログが出る

このままだとgit-svnはdcommitが出来ないのでresetで一旦まっさらにしてやる

コミットしてないファイル(hanges not staged for commit)は全部元に戻るので要注意!
(Untracked filesは消えないです)

いちいちreset –hardするのめんどくさいし、元に戻っちゃ困る・・・ってときはstash使います

コンフリクトしたら

該当ファイルを開くとコンフリクトの箇所がこんな風になっているのでどちらが正しいか確認してあげる

エクセルなどのバイナリファイルの場合はそういうわけにもいかないのでどちらかが正しいものとして対処する
どちらでもいいので1回決めて、後から手でマージし直す。。

マージでコンフリクトした際にどちらかのブランチの内容を適用 (git merge, conflict, checkout, –ours, –theirs) – いろいろ備忘録日記

全部コンフリクトが解消されたら

こうするとすべてのコミットが反映される
参考:git pull とかでコンフリクトが起こったときの対処 – Mattari Memo

その他

よく使うコマンド

1つ前のコミットを取り消したい!

参考:git commitをやり直しする&取り消しする(「get commit –amend」と「git reset」) – hogehoge foobar Blog Style5

よくあるエラーの対応

add時にエラーが出る場合は下記のようにする

Git | Morninglab

Subversionのリポジトリの更新

全てのブランチ/タグを取ってくるとき

自分のいるブランチのみチェックアウト

svnのtagをgitに取り込む

svnのtagは基本的にbranchと同じ扱いなので、リモートブランチとして表示される

これを使ってタグを作ってpushすればいい

指定したユーザーのコミットしたファイル一覧

スポンサーリンク

シェアする

フォローする

コメントを残す

トップへ戻る