私は2台のリモートサーバーを使用しています。複数のリモートで異なる履歴があります
異なる履歴開始点を作成することは可能ですか?例えば
:この場合
Remote 1: commit1 -> commit2 -> commit3 -> commit4
Remote 2: commit3 -> commit4
、私はあなたがしたいことができない場合commit3は、リモート2.
私は2台のリモートサーバーを使用しています。複数のリモートで異なる履歴があります
異なる履歴開始点を作成することは可能ですか?例えば
:この場合
Remote 1: commit1 -> commit2 -> commit3 -> commit4
Remote 2: commit3 -> commit4
、私はあなたがしたいことができない場合commit3は、リモート2.
説明している場合、Repo 2は「浅い」リポジトリです。あなたがレポ1
A -- B -- C -- D
を持っているなら、あなたは
git clone --mirror --depth=2 --no-single-branch file://localhost/path/to/repo1 repo2
としてレポ2を作成することができ、今レポ2は、このレポで
C -- D
であるあなたは、C
が親を持っていることがわかりますの親として表示されているB
のSHA IDが表示されます。コミットB
自体(およびその履歴)は存在しません。
mirror
は、これを第2のリモートとして記述したため、mirror
を使用しました。だから、これは裸で、ブランチをリモートブランチの代わりにローカルブランチとして設定します。必要に応じて、ミラーではない浅いレポ(--bare
の有無にかかわらず)を作成することができます。実際の鍵はdepth
です。
デフォルトでは、depth
は1つのブランチのみをコピーしますとは、その特定のブランチの参照をフェッチするように設定します。 no-single-branch
は、すべてのrefをマッピングする通常の動作を復元します。つまり、Repo1に大きな履歴や複雑な履歴が含まれている場合は、ここに示したものと同じくらい簡単ではない場合があります。
ローカルパスを使用する場合、depth
は無視されます。上記の理由で私はfile://
のURLを使用しています。
これは間違いなく特別なケースです。コミットのIDは完全な履歴を符号化します(これは、C
が親SHA IDを「知っていなければならない理由」を調べる方法の1つです)、一般に履歴が異なるとRepoに異なるコミット(おそらく同様のことが起きる可能性があります) Repo 2よりも1;彼らは単一の、一貫したローカルレポのためのリモコンとして共存できませんでした。しかし、最も初期の履歴を一点まで除外したいという特定のケースでは、現代のgitがこの解決法を提供します。
の履歴出発点になりたいです同じローカルリポジトリでそれを行う。
リポジトリを2回複製することができます。最初のリモコンには最初のクローンを、2番目のリモコンには2番目のクローンを保存します。 2番目のクローンでは、履歴を書き直す必要があります:https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
これは私が考えている唯一の解決策です。同じリポジトリ(ローカル/リモート)に対して異なる履歴を持つことはできません。