Re: Master and origin/master diverged
- From
- Neal Kreitzinger <nkreitzinger@gmail.com>
- Date
- Jun 22, 2012, 19:01 UTC
- Message-ID
- <4FE4C0F7.2080309@gmail.com>
- In-Reply-To
- <CAE1pOi1Ot0Fyv=2_XYKyUcsKp-m+CkT-miF=jC=wt9Rbz_dXqQ@mail.gmail.com>
On 6/22/2012 12:53 PM, Hilco Wijbenga wrote:
Show 24 quoted lines
> 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-onlyv/r, neal