From: Neal Kreitzinger Date: Fri, 22 Jun 2012 19:01:11 GMT Subject: Re: Master and origin/master diverged Message-ID: <4FE4C0F7.2080309@gmail.com> In-Reply-To: On 6/22/2012 12:53 PM, Hilco Wijbenga wrote: > Hi all, > > One of my developers managed to push something that somehow "diverged" > origin/master from everyone else's local master. > > A --> B --> C --> D (everybody's local master) > | > \--> B' --> C' --> D' --> E (origin/master) > > (i.e., A is the commit where things diverged; everyone's local master > points to D but the new commit (E) that was pushed to origin/master > uses different SHA1s for B, C, and D). I hope I explained it clearly > enough. > > Now running git pull creates a merge commit joining D and E. > > When I asked the developer what he had done he told me everything had > looked normal. No Git warnings, nothing strange in gitk (i.e. normal > linear history). So I do not understand what went wrong. > > Does anyone have any idea as to what might have happened? Perhaps if I > understand how this happened I might be able to prevent it from > happening again. > Some ways you can prevent it from happening again: (1) setting your canonical repo config to deny non-ff, and deny deletes: [receive] denyDeletes = true denyNonFastforwards = true (2) have your devs do git pull --ff-only v/r, neal