21

Git サブツリーを使用して、いくつかのサブプロジェクトをメイン プロジェクトに「リンク」しています (「svn:externals」から来ています)。数週間使用しましたが、サブツリーのリモートに変更をプッシュする時間がコミットごとに増加します。

$ git subtree push -P platform/rtos rtos master

git push using:  rtos master

1/    215 (0)2/    215 (1)3/    215 (2)4/    215 (3)5/    215 (4)6/    215 (5)7/    215 (6)8/    215 (7)9/    215 (8)10/    215 (9)11/    215 (9)12/    215 (10)13/    215 (11)14/    
...
20 more lines
...
(204)209/    215 (205)210/    215 (206)211/    215 (207)212/    215 (208)213/    215 (209)214/    215 (210)215/    215 (211)To https://github.com/rtos/rtos.git
   64546f..9454ce  9a9d34c5656655656565676768887899898767667348590 -> master

サブツリーを「クリーンアップ」して、変更をプッシュする時間を短縮する方法はありますか?

4

5 に答える 5

18

--rejoin分割後にサブツリーがメイン リポジトリに正しくマージされるように、フラグを使用してみてください。このように、各分割はすべての履歴を通過する必要はありません。

git subtree split --rejoin --prefix=<prefix> <commit...>

元のサブツリーのドキュメントから:

分割後、新しく作成された合成履歴をメイン プロジェクトにマージします。そうすれば、将来の分割では、最新の --rejoin 以降に追加された履歴の一部のみを検索できます。

于 2013-04-22T04:16:39.837 に答える
-2

git subtree splitたぶんこれが役立ちます:次のようにして、nコミットだけ戻るように指示できると思います

git subtree split --prefix XXX HEAD~n..

または、たとえば、開始するコミットを指定することによって

git subtree split --prefix XXX 0a8f4f0^..

これは不便ですが、時間を短縮するのに役立ちます。

于 2015-11-02T11:27:33.107 に答える