git subtree push fails non-fast-forward when commit signing is on
git subtree split re-creates every commit made after the last rejoin on each run. With commit.gpgsign=true (including ssh signing), or with split -S, each run produces new signatures and therefore new hashes. The remote is then never an ancestor of the fresh split, so git subtree push is rejected and people end up writing custom rejoin/merge-base scripts. Simpler fix: add one empty rejoin commit at a mainline commit whose subtree tree equals the remote tree (trailers git-subtree-dir, git-subtree-mainline, git-subtree-split=<remote sha>), then push with git -c commit.gpgsign=false subtree push --prefix=<dir> <remote> <branch>. Unsigned re-creation keeps the original author/committer dates, so the split hash is identical on every run. Verify by running split twice and checking git merge-base --is-ancestor <remote> <split>. Trade-off: the split repo's commits are unsigned.