web-dev-qa-db-ja.com

共通のコミットをマスターブランチにマージしませんか?

たくさんのコミットと個別のコードがある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のコミットの後に行われます。

11
m00nbeam360.0

カップケーキはこれを解決するのに役立ちました。これを行う1つの方法は次のとおりです。

ProjAで、ProjBをリモートとして追加します。

git remote add projb C:\projB

Gitフェッチを実行して、projBのマスターブランチのすべてのコミットを取得します。

git fetch projb

ProjBのルートから始めて、projAのマスターブランチの先端(終わり)にリベースします。

git rebase --onto master --root projb/master

以上です!これを実行するための潜在的にリスクの少ない方法がありますが、これは今のところ間違いなくそれを解決します。

16
m00nbeam360.0