From: Thomas Rast Date: Wed, 11 Nov 2009 20:35:24 GMT Subject: Re: [PATCH] Clarify documentation on the "ours" merge strategy. Message-ID: <200911112135.25839.trast@student.ethz.ch> In-Reply-To: <2faad3050911110713y4e33c7d2h21ad42efe4fd70b3@mail.gmail.com> Baz wrote: > 2009/11/11 Peter Krefting : > > ours:: > > This resolves any number of heads, but the result of the > > - merge is always the current branch head. It is meant to > > + merge is always the current branch head, discarding any > > + changes on the merged branch. It is meant to > > I think part of the problem is that it is unclear what the "current > branch head" means when used in a rebase, and hence when this text is > included in the help for git-rebase and git-pull. [...] > Perhaps something more in the way of an explicit warning? > > ours:: > This resolves any number of heads, but the result of the > merge is always the current branch head, discarding any > changes on the merged branch. It is meant to > be used to supersede old development history of side > branches. Note that when rebasing, the branch you are > rebasing onto is the "current branch head", and using this > strategy will lose all of your changes - unlikely to be what > you wanted to do. I'd much rather see this explained in the description of the rebase -m/-s options since it (the swap) applies to all uses of 'git rebase -m'. Perhaps with an extra (but short) note in the "ours" description, like so: diff --git i/Documentation/git-rebase.txt w/Documentation/git-rebase.txt index 33e0ef1..181947c 100644 --- i/Documentation/git-rebase.txt +++ w/Documentation/git-rebase.txt @@ -228,6 +228,10 @@ OPTIONS Use merging strategies to rebase. When the recursive (default) merge strategy is used, this allows rebase to be aware of renames on the upstream side. ++ +Note that in a rebase merge (hence merge conflict), the sides are +swapped: "theirs" is the to-be-applied patch, and "ours" is the so-far +rebased series, starting with . -s :: --strategy=:: diff --git i/Documentation/merge-strategies.txt w/Documentation/merge-strategies.txt index 4365b7e..0cae1be 100644 --- i/Documentation/merge-strategies.txt +++ w/Documentation/merge-strategies.txt @@ -33,6 +33,9 @@ ours:: merge is always the current branch head. It is meant to be used to supersede old development history of side branches. ++ +Because the sides in a rebase are swapped, using this strategy with +git-rebase is never a good idea. subtree:: This is a modified recursive strategy. When merging trees A and -- Thomas Rast trast@{inf,student}.ethz.ch