On Thu, Oct 13, 2011 at 06:56:14PM +0000, arQon wrote: > I'll give a shot, though I don't know how good it'll be. Off the top of my > head, I don't see any good way to explain the inconsistency with LOCAL CHANGES > sometimes preventing switches and sometimes not, based on what is to the user > an arbitrary set of rules that has nothing to do with the *current state* of > the worktree, but rather the state of those files in prior commits. The rules are fairly straightforward. You are moving from branch A to branch B. If path X is not changed going from A to B, git will not touch it, whether or not you have local changes. If path X is changed going from A to B, then git will refuse the checkout, and you have the option of: 1. checkout -f: overwrite your local changes with what's in B 2. checkout -m: merge your changes with what's in B (using A as a common ancestor) > But sure, I'll see if I can come up with something. If nothing else, > having the manpage at least explain what "M" means; that it can be > potentially disastrous; and what you need to do to avoid it, would be > a definite plus. You keep saying things like "disastrous". Git's rules are specifically designed to be as flexible as possible without allowing the checkout command to cause data loss. Do you actually have a case that causes irrecoverable data loss? Note that I don't count "these changes were based on A, now they are based on B" as data loss. Your file content is still completely intact, and if you want to make them based on "A" again, you just need to "git checkout A" again. -Peff -- 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