5

私は現在、sourceforge のFreeGLUTプロジェクトのメンテナーの 1 人です。このコードは SVN リポジトリに保存されていますが、他のユーザーの貢献を刺激するために、git リポジトリを利用できるようにしたいと考えています。現在githubにあるsvnトランクのgit-svnクローンをすでに持っています(実際にはgit-svnと互換性がないSmartGitで作成されています)。

これはクローンで作りましたhttps://svn.code.sf.net/p/freeglut/code/trunk/freeglut。ただし、クローンhttps://svn.code.sf.net/p/freeglut/codeを作成して、SmartGit の svn ブリッジにブランチとトランクを認識させる必要があることがわかりました。

この新しい正しいクローンをローカルに作成しました。ここでの問題: 古い/間違ったクローンのローカル git リポジトリに既にいくつかのコミットがあります。これらを新しいレポに転送したいのですが、ディスク上のルートディレクトリが同じではないため、ここで概説した単純なリベース戦略は機能しません (私は思います)。

パッチでそれを行うこともできます.パッチファイルのパスにプレフィックスを付けgit applyて動作させる--directory引数もありますが、コミットごとにコミットする必要があります. 少なくとも、複数のコミットを 1 つのパッチ ファイルに入れ (スカッシュせずに) HEAD、.

問題を解決するにはどうすればよいですか?

4

2 に答える 2

8

わかりました。

  1. git format-patchブランチ全体など、一連のコミットを含むファイルを生成できます。
  2. git amこの--directoryオプションを使用すると、パッチ ファイルに含まれるコミットを 1 つずつ再生し (こちらを参照)、コミットすることができます。

問題が解決しました!

于 2014-01-03T01:54:20.677 に答える
0

はい、パッチでそれを行うことができます。

  1. を使用して最後のコミットをリセットしgit reset --soft 'HEAD^'ます。または、3 つのコミットがある場合。ただする git reset --soft HEAD~3
  2. パッチを行います。

この答えはそれをよく説明していると思います。

于 2014-01-02T16:14:43.420 に答える