Subject: Re: git push bug?

From: "Shawn O. Pearce" <[email-masked]>
Date: Thu, 18 Oct 2007 20:49:26 -0400

Joakim Tjernlund <[email-masked]> wrote:
> BTW this does not work either:
> 
> git reset --hard HEAD^
> git push -f  ssh://devsrv/var/git/os2kernel.git +master:master
> updating 'refs/heads/master'
>   from 9c344d18d01221c8f25080cb58910e6b09efbf55
>   to   5761a9e5924b34615c748fba2dcb977ed04c1243
> Generating pack...
> Done counting 0 objects.
> Writing 0 objects...
> Total 0 (delta 0), reused 0 (delta 0)
> error: denying non-fast forward refs/heads/master (you should pull first)
> ng refs/heads/master non-fast forward
> error: failed to push to 'ssh://devsrv/var/git/os2kernel.git'
> 
> I thought the + in +master:master and the -f option should let me
> do that.

Yes, but its only on the client side.

See when we do a push the local client side determines if the push is
going to be a fast-forward or not.  If it isn't then the git-push
client aborts before it even uploads data to the remote side.
The --force or + can be used to make the client side skip this
check and just plow forward anyway.

But the remote side can also veto a non-fast-forward update.  By
default it refuses to allow such updates as they can orphan commits
(and thus potentially lose important work).  See the config option
receive.denyNonFastForwards; you may want to set this to true in
the remote side's config file.

-- 
Shawn.