4

GitソースコードベースからTFSリポジトリを生成する必要があり、元のコミット履歴を保存したいので、TFSチェンジセットを作成するはずのTf-Git「git tf checkin --deep」コマンドを使用しようとしました各 Git コミット。

残念ながら、Git リポジトリ内の多くのコミットにはマージのために 2 つの親があり、TFS ではコミット履歴をインポートできるようにするためにコミット履歴が線形である必要があるため、このステップは失敗します。したがって、次のエラーが表示されます。

git-tf: cannot check in - commit 2b15822 has multiple parents, please rebase to form a linear history or use --shallow or --autosquash

これは理解できます。しかし、既存の Git リポジトリにそのようなコミットの長いチェーンがある場合、どうすればよいでしょうか? 手動でコミット履歴を修正するのに 1 日か 2 日を費やすことができることはわかっていますが、それは私たちが日々を費やしたいことではありません。コミット履歴を線形に修正する自動化された方法はないことを正しく理解しているのでしょうか?手作業に何時間も費やしたくない場合は、履歴全体を単一の変更セットとしてインポートするだけでよいでしょうか?

4

1 に答える 1

9

リベースは実際にこれを解決するはずです。

git rebase -i <hash of commit before first branch has been created>

そのコマンドを実行するとポップアップするウィンドウでは、何も変更しないでください。保存して閉じるだけです。

実例:

A <- B <- E <-----F <- G      master
     ^            ^
      \          /
       - C <- D -             branch

コミットCD、ブランチ上にあり、マージ コミットで master にマージされましたF

から実行するgit rebase -i Bと、次の結果が得られますmaster

A <- B <- C <- D <- E <- G    master

F空になるため、マージコミットが消えたことに注意してください。

于 2013-02-05T09:47:41.383 に答える