2013-05-31 26 views
20

誰もがSVNを集中サーバとして使用しているプロジェクトで、すべての人がそのサーバで行った変更をプッシュしています。私はGitをローカルで使用したいと思っています。私はかなり新しいgit svnです。私はgit svn clone -r HEAD https://svn.repo/app/branchgit svn cloneのリポジトリを作成しました。gitを使って更新したいと思います。Git-SVN:集中化されたSVNサーバからGitリポジトリを更新する

私は 'git pull like'コマンドが必要ですが、SVNサーバーリポジトリの特定のリビジョンから取得する必要があります。 また、SVNサーバーリポジトリの特定のリビジョンからフェッチするための 'フェッチのような'コマンドがありますか?

クローンプロジェクトに.svnというフォルダがありません。git remoteは何もわかりません。しかし、私はgit config -lをして、私はSVNサーバーのURLを取得し、何とか私はSVNサーバーにリンクされています。私はどのように取ったり引っ張ったりするのか分からない。

ありがとうございます!

答えて

37
Gitリポジトリ経由でSubversionのリポジトリ上で動作するように

最善の方法:

  1. git svn init -s https://svn.repo/app/ myrepohttps://svn.repo/app/下レポは標準/trunkbranchestagsサブディレクトリ
  2. これ以上のコミットはしなくなるまでmyrepoでgit svn fetchを行いますが含まれていることを想定しフェッチされています(かなり時間がかかり、時にはWindowsで中止されることもあります)。 git checkout -b trunk remotes/trunk

を経由して、特定のSubversionのブランチまたはトランクが次にあなたは、単にすべてのSubversionを含むあなたのGitのレポに、閲覧ハックとコミットすることができ

  • チェックアウトはコミットし、分岐します。 git logを経由してあなただけの歴史を参照する必要があり、特定のSubversionのリビジョンにジャンプするにはgit svn dcommit
  • を使用SVNにあなたの地元のコミットをプッシュするにgit svn rebase

  • を使用SVNから新しいコミットに引っ張って

    • とSubversionコミットを反映してコミットを検索します。コミットメッセージのgit-svn-id:行にSubversionリビジョンを簡単に見つけることができます。そのバージョンを明示的にチェックアウトするにはgit checkout <commithash>を使用してください。

  • 10

    良いスタート:

    新しいSVNを取得するためには、あなたの地元のレポにコミット:git svn rebase

    はSVNにコミットするローカルのをプッシュする:git svn dcommit

    おそらくgit stashを使用する必要がありますし、 git stash pop、作業コピーにコミットされていない変更がある場合は、上記の2つのコマンドを使用してください。

    関連する問題