最初のステップ (リポジトリの分割) は完了しましたが、「リポジトリの分離に Git サブツリーを使用する」で説明されているように、リポジトリを A に戻しA
ていません。B
あなたのA/mySubDir - B
状況に合わせた抜粋を次に示します。
メイン リポジトリのサブツリーとしてリポジトリを追加する
メイン リポジトリでは、分割した元のファイルを削除し、代わりにリモート リポジトリをサブツリーとして追加する必要があります。
分割したディレクトリ全体を削除してから、コミットします。
git rm -r A/muSubdir
git commit -am "Remove split code."
新しい共有リポジトリをリモートとして追加します
git remote add B /url/to/B.git
リモートリポジトリをサブツリーとして追加します
git subtree add --prefix=A/mySubDir --squash shared master
注: スイッチを使用するのは、アップストリームの偽のバグ修正コミットで自分のコミット履歴を複雑にするのではなく、共有モジュールの-–squash
バージョンを表す単一のスナップショット コミットが必要なためです。X
もちろん、履歴全体が必要な場合は、そのスイッチをオフのままにしておいてください。
アップストリーム リポジトリに基づくサブツリーが作成されました。良い。
画像では、一番下のコミットがすべてのアップストリーム コードを含む圧縮されたコミットであり、これがコードとマージされていることがわかります。
重要な注意:この をリベースしようとしないでください。そのまま押す。
リベースすると、次のsubtree pull
.
ここまでは順調ですね。しかし、上流のリポジトリから変更を受け取ることができない場合、これはあまり役に立ちません。幸いなことに、それは簡単です。
アップストリームの変更をプルする
アップストリーム リポジトリから変更をプルするには、次のコマンドを使用します。
git subtree pull --prefix=A/mySubDir --squash shared master
(すべての新しいアップストリーム コミットを単一のコミットに押しつぶし、リポジトリにマージします)。
重要:前述のとおり、これらのコミットをリベースしないでください。
アップストリーム リポジトリへの変更のプッシュ
アップストリーム リポジトリへの変更の提供は、次のように簡単です。
git subtree push --prefix=A/mySubDir --squash shared master