28

私は、SVN誰もが中央サーバーとして使用し、誰もがそのサーバーで行った変更をプッシュするプロジェクトに取り組んでいます。Gitローカルで使用したいのですが、かなり新しいですgit svn。私はgitを介して更新を行いたいとgit svn cloneリポジトリを実行しました。git svn clone -r HEAD https://svn.repo/app/branch

「git pull like」コマンドが必要ですが、SVN サーバー リポジトリの特定のリビジョンからプルする必要があります。また、SVN サーバー リポジトリの特定のリビジョンからフェッチする「fetch like」コマンドはありますか?

.svn複製したプロジェクトにフォルダーがなく、何も表示されgit remoteません。しかしgit config -l、私はSVNサーバーのURLを取得したので、どういうわけかSVNサーバーにリンクしています。ただし、取得またはプルする方法がわかりません。

ありがとう!

4

2 に答える 2

49

Git を介して Subversion リポジトリで作業する最良の方法:

  1. git svn init -s https://svn.repo/app/ myrepohttps://svn.repo/app/の下にレポに standard /trunkbranchesおよびtagsサブディレクトリが含まれていると仮定します
  2. コミットがフェッチされなくなるまで myrepo でagit svn fetchを実行します (かなり時間がかかり、Windows では中止されることもあります)。
  3. 経由で特定の Subversion ブランチまたはトランクをチェックアウトしますgit checkout -b trunk remotes/trunk

その後、Subversion のすべてのコミットとブランチを含む Git リポジトリをブラウズ、ハック、コミットするだけです。

  • SVN 使用から新しいコミットを取得するにはgit svn rebase
  • ローカル コミットを SVN にプッシュするには、次を使用します。git svn dcommit

特定の Subversion リビジョンにジャンプするには、履歴を参照してgit log、対応する Subversion コミットをミラーリングするコミットを検索するだけです。git-svn-id:コミット メッセージの行で Subversion のリビジョンを簡単に見つけることができます。a を使用して、git checkout <commithash>そのバージョンを明示的にチェックアウトします。

于 2013-05-31T13:18:51.047 に答える
13

良いスタート:

新しい svn コミットをローカル リポジトリにフェッチするには:git svn rebase

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

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

于 2013-05-31T13:13:56.310 に答える