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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html