git subtree split
まさにそれを行います。それを介し--prefix
てフォルダーを指定すると、リポジトリ内に別のツリーが生成され、それを別のリポジトリにプッシュして、必要に応じて使用できます。
現在のバージョンの git (1.8.1) にはサブツリーのドキュメントは含まれていませんが、 https ://github.com/apenwarr/git-subtree/blob/master/git-subtree.txt で見つけることができます。
使用できるフローは次のとおりです。
# In Repo A create your subtree split and push it
> git subtree split --prefix sub --branch subBranch
> git push C subBranch:master
# After some changes that touched the sub directory
> git subtree push --prefix sub C master
最後のコマンドは、ツリーを再分割し (以前に分割されたコミットを使用して、C のツリーの整合性を維持します)、それを にプッシュしC/master
ます。
プッシュされたコンテンツの履歴を削除する場合は、 -ing および-ing のときにオプションC
を使用できます。圧縮されたコンテンツ サブツリーと圧縮されていないコンテンツ サブツリーを混在させ始めると、以前の分割を適切に分割して再利用できなくなり、それを にプッシュできなくなるため、一貫性を保ち、それを引き続き使用する必要があります。--squash
git split
git push
C
最後に、最初の分割を作成したら、sub
それを削除して新しいサブツリーとして再インポートする必要はまったくありません。保持するgit subtree
と、他の分割から以前に作成されたコミットが再生成/再利用されます。sub
フォルダーを削除してから、作成されたコミットから再度追加しても機能するはずです。使用している場合は、履歴を持たずに履歴を保持することで、--squash
必要なものと一致します)。C
A