GitHub(Git)とGoogleCode(Subversion)でプロジェクトを共存する
Git使ってみたいけど、Subversionも捨てれないなーって人のために二兎追ってみる。
結論から言うとできるっぽい。
以下、備忘録。初Gitなので変なこと言ってたらつっこんでください。
動作環境はSnowLeopardのコマンドライン上
前提条件
- Subversionクライアントあり
- Gitクライアント(git-svnつき)あり
- GoogleCode上にプロジェクト作成済み
- GitHub上にプロジェクト作成済み
MacPortsだとsudo port install git-core +svnね
SubversionからGitに移行
# Subversion上のレポジトリをとってくてローカルのレポジトリにクローン (プロジェクト構成は自分の環境に合わせる) $ git svn clone --username <<GoogleCodeのユーザー名>> https://<<GoogleCodeのプロジェクト名>>.googlecode.com/svn/<<プロジェクト名>> -T trunk -t tags -b branches $ cd <<GoogleCodeのプロジェクト名>> # リーモトのレポジトリ(orgin)を指定 $ git remote add origin git@github.com:<<GitHubのユーザー名>>/<<GitHubのプロジェクト名>>.git # ローカルのレポジトリ(master)をリモート(github)のレポジトリ(origin)にプッシュ(反映) $ git push origin master # svnignoreを反映 $ git svn show-ignore >> .git/info/exclude
GitHubに反映
適当に修正後
# ローカルのレポジトリに変更をコミット $ git commit -a -m "hogehoge" # リモートのレポジトリに反映 $ git push
ここは普通か。
GoogleCogeにも反映
今の変更点をSubversionにも反映
# ローカルレポジトリの変更をSubversion上のレポジトリに反映 $ git svn dcommit
簡単ですね
逆にSubversion側の変更をGitに反映
別の(Gitが使えない)場所で作業して、GoogleCodeにコミットした後、GitHubに反映させたいとき
# Subversion上のレポジトリの変更をローカルレポジトリに反映 $ git svn rebase # リモートのレポジトリに反映 $ git push
ここでエラー発生
To git@github.com:making/jbf.git ! [rejected] master -> master (non-fast forward) error: failed to push some refs to 'git@github.com:making/jbf.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'non-fast forward' section of 'git push --help' for details.
non-fastほげほげがキーワードっぽい。historyが消えるとかどうとか。よーわからん。helpみたら+つければいけそう
$ git push origin +master
これで良いのかわからんけど、うまくいった。
問題があったら教えてください
ぼくのGitHub
ここ
フォローして!





