I've been using the git subtree extension (https://github.com/apenwarr/git-subtree) . I use "--squash" to make the log of main project clean, my steps like this:

  1. add lib into main project

    git subtree add -P sub/libdir --squash lib_remote master

  2. get update from lib

    git subtree pull -P sub/libdir --squash lib_remote master

  3. push changes to lib_remote

    git subtree push -P sub/libdir --squash lib_remote master

It works very well for me(both main project and lib, have a history make good sense). The problem is the time of git subtree push, becomes longer and longer.

My purpose of using git-subtree is almost the same with Screndib, who asked git-subtree is not retaining history so I cannot push subtree changes, how can I fix this/avoid this issue in the future?

I guess, when using --squash, every time to process a push , git subtree needs to search the whole history since the "subtree add".

How can I reduce the time of subtree push? Or make it work more effective, rather than the whole history, only process changes since last git subtree push(or pull)?

Edit
Report