あなたadd
サブツリーとき、それは最初のコミットに名前を格納するため、git subtree
コマンドは、あなたのサブツリーを知っている:most-を見つけることgit-subtree-dir
を含むコミット--squash
オプション付き
Add 'subdir/' from commit 'c7fbc973614eced220dcef1663d43dad90676e00'
git-subtree-dir: subdir
git-subtree-mainline: c166dc69165f6678d3c409df344c4ed9577a2e11
git-subtree-split: c7fbc973614eced220dcef1663d43dad90676e00
git subtree pull
が見えますリモートリポジトリからの最近のコミット、したがってすべてのコミットを適用して潰すポイント。多くの場合、git subtree split --rejoin
操作が成功する
:
$ git subtree split --rejoin --prefix=dir2/subdir HEAD
Merge made by the 'ours' strategy.
25070c483647f8136655d0e0c6c3d62f469177aa
結果のようなルックスをコミットします。これは、コミット
Split 'dir2/subdir/' into commit '25070c483647f8136655d0e0c6c3d62f469177aa'
git-subtree-dir: dir2/subdir
git-subtree-mainline: 59cc3c770e78dbc30bdfe36a6b4e14ce83b38f6c
git-subtree-split: 25070c483647f8136655d0e0c6c3d62f469177aa
が発見されると、次git subtree pull --squash
は、ほとんどの場合に成功します。サブツリー操作が失敗することがあり、レポの作業コピーにサブツリーのブランチを残すことに注意してください。クリーンスレートで始まる残りの一時的なブランチを削除してください。
上記の操作は成功しないことがありますが、その理由が見つかりませんでした。そのような場合は、サブツリーを追加したコミットにリベースし、コミット・メッセージを修正して手動でディレクトリー名を変更することができます。しかし、この操作は、他のすべてのあなたの全体の歴史を破損します。
ありがとう、それは私のために働いた! gitのサブツリーがコミットメッセージのテキストを探していると言ったので、名前を変更するために必要なテキストを追加しようとしましたが、私の作業コピーのサブツリーのブランチで終わりました。 – Amomum