たくさんのコミットと個別のコードがあるGitリポジトリがあります
/Proj1
また、一般的なコミットではないコミットが1つある別のGitリポジトリもあります。
/Proj2
2つのリポジトリをマージして、親のコミットで履歴を正しく表示するにはどうすればよいですか?基本的に、2つのリポジトリ間で共有コミットはありませんが、両方のコードセットを持つ1つのリポジトリが必要です。私はそれが次のように見えることを望みます:
proj2 commit
proj2 commit
proj1 commit (root)
リベースがオプションであることは知っていますが、--onto
を使用してルートコミットを置き換えるかどうかはわかりません(リモートリポジトリとrebase --onto --root master
からフェッチを行うとそうなるようです)。
最初は機能しているように見えるgitサブツリーを使用しようとしましたが、git-tfsを使用してコミットをプッシュすると、次のようなエラーが発生します。
警告:親...はTFSで追跡されたブランチ(TFSでチェックされていない)に属していないため、無視されます
コミットは実際にはプッシュアップしません(サブツリーである可能性もあります)。
編集:1つのリポジトリ(Proj1)だけで終了したいのですが、Proj2のコミットはマスターブランチでのProj1のコミットの後に行われます。
カップケーキはこれを解決するのに役立ちました。これを行う1つの方法は次のとおりです。
ProjAで、ProjBをリモートとして追加します。
git remote add projb C:\projB
Gitフェッチを実行して、projBのマスターブランチのすべてのコミットを取得します。
git fetch projb
ProjBのルートから始めて、projAのマスターブランチの先端(終わり)にリベースします。
git rebase --onto master --root projb/master
以上です!これを実行するための潜在的にリスクの少ない方法がありますが、これは今のところ間違いなくそれを解決します。