On Tue, Jan 31, 2017 at 5:10 PM, Carlo Wood <carlo@xxxxxxxxxx> wrote: > On Tue, 31 Jan 2017 14:08:41 -0800 > Stefan Beller <sbeller@xxxxxxxxxx> wrote: > >> On Sun, Jan 29, 2017 at 5:00 PM, Junio C Hamano <gitster@xxxxxxxxx> >> wrote: >> > 2. If the amend is good and ready to go, "git add" to update the >> > superproject to make that amended result the one that is needed >> > in the submodule. >> >> yup. > > But that is what I am doing. The amended commit IS already > added to the superproject (and pushed to the remote). > > Please have a look at my script, this happens here: > > # Correct that in the parent too: > pushd parent > git add subm > git commit -m 'Updated subm.' > popd And if you were to use ammend here, too; there would be no problem; In the parent there are now two commits, the first one pointing at the first (unammended) commit in the submodule, the second pointing to the corrected commit. > > The commit from before the amend was added to the super > project (but never pushed) but has now been completely > replaced. I still think this is a flaw in git. It shouldn't > not complain and simply push. The problem here is in the design. When "on-demand" is set, the parent repo determines which sumbodules needs pushing, then runs a plain "git push" in them and then checks again. The push operation in the submodule did not push out the un-amended commit (which is correct IMO). The parent in the second check determines that there is a commit, that is not pushed, though. Maybe we need an option there "on-demand-but-no-recheck" as a weaker promise what Git can deliver there. > > -- > Carlo Wood <carlo@xxxxxxxxxx>