GitHubにはしばらくの間プロジェクトがありましたが、以前はsvnから移行されました。それが最初に移行されたとき、SVN履歴はGitに持ち込まれませんでした。プロジェクトの設定後にSVNの履歴をGitにコピー/インポート/クローン/移動する方法はありますか?SVNから既存のGitプロジェクトへの履歴をインポート
答えて
git-svn
はではありませんレポジトリの1回の変換に適したツールです。 Gitを既存のSVNサーバーのフロントエンドとして使用する場合は便利ですが、ワンタイムコンバージョンの場合はではなくを使用してください。git-svn
を使用しますが、svn2git
はこのケースに適しています。
svn2git
というPlenyツールがありますが、おそらく最も良いのはhttps://github.com/svn-all-fast-export/svn2gitのKDEです。そのsvn2git
ツールを使用することを強くお勧めします。それは私がそこで利用できると知っている最高です、そして、それはあなたがそのルールファイルでできることに非常に柔軟です。
svneverever
からhttp://blog.hartwork.org/?p=763までの履歴は、SVNリポジトリの履歴をGitに移行する際の履歴を調べるのに最適なツールです。
あなたが適切なGitのリポジトリにあなたのSVNのレポを変換した後、既存のレポにリモートとして新しく生成されたレポを追加してコミットを取得します。次に、git replace
を使用して、新しい履歴の最初のコミットを古い履歴の最後のコミットに置き換えます。これをパーマネントにしたい場合は、を使用して、パーマネントを置き換えることができます。
公開された履歴を書き換え、元の履歴に基づいて地元の支店を持つすべての人は、git rebase
の文書に記載されているようにこの履歴の変更から回復する必要があることに注意してください。これを望まない場合は、新しく移行したリポジトリをGitリポジトリに引き込んで、SVN履歴から新しいブランチを作成するだけです。あなたはその後、技術的にはOKの複数のルートコミットと独立した履歴を持ちますが、ファイルの履歴は引き続き削除されます。
これは可能ですが、リポジトリを既にクローンしているすべてのユーザーに影響を与えます。それでそれが価値があるかどうかを最初に決める必要があります。
されていない場合は、単にのgit-svnの別のgitリポジトリ内で複製し、ソースコードの歴史のためにそこにそれを維持...
あなたは歴史が取得されると、さらに移動したい場合は、追加この新しいリポジトリはあなたの実際のリポジトリにリモートとしてあり、フェッチします。
git fetch --all
これが完了したら、ばらばらの履歴があります。
次に、 'git replace'を使用して、新しいリポジトリの最初のコミットを、最後に取り出したブランチに置き換えます。
https://git-scm.com/docs/git-replace
そして最後には、間違いなく歴史を書き換えすることを、 'gitのフィルタ分岐' を使用しています。
次のようなもので、新しい歴史をプッシュする必要があります:クローンまたはすべての履歴を取得する必要があります
git push origin --all
および他のすべての開発者...そして;-)
- 1. 履歴付GitへのSVN?
- 2. ClearcaseからGitへの履歴を保存しますか?
- 3. gitフォルダをローカルコンピュータから既存のリポジトリコミット履歴に移動する
- 4. SVN:ユーザーチェックアウト履歴?
- 5. git(git-svn)内のファイルの不完全な履歴
- 6. SVNインポート既存ファイル
- 7. スカッシュgitの履歴
- 8. TFSVCからGITへの移行 - 部分履歴付きリポジトリ?
- 9. SVNトランクのインポート時の履歴を失う
- 10. Git svn clone:改訂履歴のフェッチを延期する方法
- 11. Android Studio Git->既存のファイルを追加する、リポジトリの履歴を失う
- 12. 既存のSVNプロジェクトをEclipseにインポートする
- 13. GitからSVNへ
- 14. git-svnからgitoliteに移行して履歴を保持する方法
- 15. GitからSVNへの変換時にコミット履歴に電子メールアドレス、開発者名を書き直すには?
- 16. 変更履歴:svn + latex
- 17. 既存のgitベースのプロジェクトをeclipseにインポートする
- 18. gitソース行の履歴
- 19. 履歴なしのgitブランチ
- 20. 全体gitの履歴は
- 21. Gitのクローン/ダウンロード履歴
- 22. 既存のsvnリポジトリをgitにプッシュ
- 23. xCode:既存プロジェクトとのリンク、このプロジェクトからのファイルのインポート
- 24. GITへの単一のSVNブランチへの移行 - トランクのすべての履歴を取得できません
- 25. 履歴データをレポートジェネレータのテストカバレッジ履歴にインポートするには
- 26. 既存のgitリポジトリを既存のSVNリポジトリにプッシュ
- 27. git p4クローンファイルの履歴(統合履歴を含む)
- 28. SVNからGITへの転送、SVNからGITへの共有リポジトリとのマージ
- 29. ASP.NETのSVNリポジトリからASP.NETのリビジョン履歴を取得する
- 30. インポートXCTestは、既存のプロジェクト
Subversionの履歴に基づいて新しいクローンを作成し、それらの変更を既存のGitリポジトリにマージしようとすることができます。 Subversionの履歴を既存のGit履歴のベースとして紹介することはできませんが、今すぐマージする並列履歴として追加することができます。 – poke
@pokeなぜ彼はできないはずですか?もちろん彼はそうです。もちろん、彼はこれを使って公開された履歴を書き直して、リポジトリを使用する人はいつでも、変更された公開履歴を持つようにすべてのブランチを手作業で再配置する必要があります。 – Vampire
@ヴァンパイア彼は歴史を書き直すことはできません、それは私が言ったことです。プロジェクトがしばらく活動していれば、歴史をそのまま保つのが良い考えです。 – poke