今では、ほとんどのgitエキスパートがすぐに思い浮かぶことを知っていますがgit rebase
、私はより一般的な意味で「リベース」という言葉を使用しています。プロジェクトの構造は次のとおりです。
.
..
.git
tools
lib
src
.git
build
.
とディレクトリはどちら./src
も明らかにgit
リポジトリであり、文字通り長い歴史とそれぞれに多数のコミットがあります。のリポジトリはディレクトリ(それ自体のリポジトリ)を.
無視します。src
.
率直に言って、ビルドシステムはソースコードとともに進化しており、非常に広範囲になっているため、ソースファイルを含むすべてを追跡するために1つのリポジトリだけを使用したいということに気づきました。
私の問題は、このリポジトリに、現在のリポジトリの一部である履歴を保持させる方法がわからないことですsrc
。それも可能ですか?これが「リベース」の意味です。N個のコミット全体で変更./src/main.c
が追跡される場合./src/.git
は、これらの変更を保持して、新しいリポジトリの一部にします./.git
。同じ履歴、リベースされたファイルパス。
アップデート
サブツリーのマージは、SOで収集したものから、私が望むものとは別のものです。要するに、それは私が必要とする以上のことをします。古いリポジトリのコンテンツが必要なだけです。開発のすべてのブランチとすべてのコミット、タグなどが、常に親リポジトリの一部であるかのように見えます。本質的に、唯一の変更はファイル自体へのパスです-子リポジトリが追跡される前に./main.c
、新しいリポジトリが追跡さ./src/main.c
れます。私が聞いたgit
ように、ファイルではなくコンテンツを追跡し、上記のようなファイルパスとこれらへの参照を変更しますパスは、かなり些細なものである必要がありますか?