0

私が最初のブランチにいるとすると、次のように「foo」ファイルと「bar」ファイルを追跡します。

my_repository/
            ./foo
            ./bar

この「foo」および「bar」ファイルが別の場所にある別のブランチ (リモート) も追跡するにはどうすればよいですか? つまり、この 2 番目のブランチをチェックアウトすると、my_repositoryフォルダーは次のようになります。

my_repository/
            ./some_file
            ./another_file
            ./tests/
                 ../foo
                 ../bar

もう少し説明すると、リモート リポジトリを追跡する最初のブランチと、別のリモート リポジトリを追跡する 2 番目のブランチがあります。

ある時点で、2 番目のリポジトリを別の場所に複製し、ファイルをフォルダーに追加foobartestsコミットしました。

次に、最初のブランチである公式のクローン (origin/master) からファイルfooとファイルをコミットして変更を加え始めました。barここで、この変更を 2 番目のリポジトリにも送信したいと思いますが、ファイルのコンテンツを上書きするだけではありません。2番目のブランチにもコミット履歴が欲しいです。

問題は、この 2 番目のリポジトリがファイルを別の場所に配置することです。

任意のヒント?

4

2 に答える 2

1

サブツリーのマージ戦略を探しているようです(こちらも参照)。

于 2011-08-02T07:59:21.190 に答える
0

問題はないはずです。いくつかのコンテンツを持つ 2 つのツリーがあります。それらをマージし、ファイルをマージ内のいずれかの場所に配置して、そのマージをプッシュします。

Git はファイルの ID を追跡しませんが、マージを実行して、一方が変更され、もう一方が存在しないファイルを検出すると、変更が適用される可能性があるほど十分に類似したファイルを探します。したがって、ファイルが類似している場合、git はそれらをマージします (また、必要に応じて他の場所に移動することもできます)。ファイルが異なる場合は、両方を取得するだけで、選択する必要があります (ただし、マージしようとするよりもいずれにせよ競合するため、ファイル ID を追跡しなくても何も失われませんでした)。

于 2011-08-02T08:00:10.120 に答える