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
にプッシュします。
あなたはコンテンツに歴史を削除する場合git split
が-ingとgit push
-ingときに--squash
オプションを使用することができますC
にプッシュ。一貫性を保ち、それを前もって使用し続ける必要があります。押しつぶされたコンテンツと非押し潰されたコンテンツを混在させ始めると、サブツリーは適切に分割してプレビオスの分割を再利用することができなくなるため、C
にプッシュすることはできません。
最後に、sub
の最初の分割を作成すると、それを削除して新しいサブツリーとして再度インポートする必要はありません。あなたがそれを持っていれば、git subtree
は他の分割から以前に作成されたコミットを再生成/再利用します。フォルダを削除してから、作成したコミットからsub
を再度追加すると、それでも正常に動作するはずです。--squash
を使用している場合は、C
には履歴はありませんが、A
の履歴を保持します。