Say we have a repository with "master" and "sub" branches like below:
A---B---C---D---E---F master
/
X---Y
X---Y sub
where commits A and B include changes in subdirectory "sub", commit C
removes subdirectory "sub", commit D is generated by "git subtree add
-P sub Y", and commits E and F also include changes in subdirectory
"sub".
We'd get this if we run "git subtree push -P sub . sub" on master at F:
X---Y---E'--F' sub (after push)
On the other hand, if we have simliar trees except that commit D is
generated by "git subtree add --squash -P sub Y":
A---B---C---D---E---F master
/
Y'
X---Y sub
We'd expect to get this when we run "git subtree push -P sub . sub" on
master at F:
X---Y---E'--F' sub (after push, expected)
But actually we get this (in Git 2.22.0):
A---B---C---D'--E'--F' sub (after push, actual)
/
X---Y
This seems to be a side effect of 2.7.0 -> 2.7.1 in which a change is
made to include merged branches in "git subtree push", but mistakenly
causes branches before "git subtree add --squash" be included.