From: Jonathan Nieder <jrnieder@gmail.com>
To: meanlogin@gmail.com
Cc: git@vger.kernel.org
Subject: Re: possibly a spurious conflict in a three way merge
Date: Thu, 7 Aug 2014 11:52:43 -0700 [thread overview]
Message-ID: <20140807185243.GE12427@google.com> (raw)
In-Reply-To: <53E3A99E.1090102@gmail.com>
Hi,
meanlogin@gmail.com wrote:
> 2. commit test.txt to master:
> line1
> line1
>
> 3. branch and checkout branch1
> 4. make and commit the following change to branch1:
> #line1
> #line2
>
> 5. checkout master
> 6. make and commit the following change to master:
> line1
> #line2
>
> 7. merge branch1, git sees a conflict:
> <<<<<<< HEAD
> line1
> =======
> #line1
> >>>>>>> branch1
> #line2
>
> Why?
Thanks for a clear example. On branch1 you made the following change:
(a) modify lines 1 and 2
On master, you made a different change:
(b) just modify line 2
The changes touch the same chunk of lines and don't produce the same
result there. Git is being conservative and letting you know that the
two branches didn't agree about what line 1 should say.
On the other hand, if you had a larger files and on branch1 made the
following change:
(a) modify lines 1 and 101
and on master, you made a different change:
(b) just modify line 101
then the changes are touching different parts of the code and are
merged independently. The result would be a clean merge where lines 1
and 101 are both modified.
Git's conservatism can be helpful when working with code, where
adjacent lines are likely to be affecting a single behavior and the
conflict can help the operator to know to be extra careful. It makes
less sense for line-oriented input where every line is independent.
If you are often making changes to a line-oriented file, it may make
sense to set up a custom merge driver to override git's merge behavior
for that file. See 'Defining a custom merge driver' in
gitattributes(5) for details about how that works.
Hope that helps,
Jonathan
prev parent reply other threads:[~2014-08-07 18:52 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-07 16:30 possibly a spurious conflict in a three way merge meanlogin
2014-08-07 18:52 ` Jonathan Nieder [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140807185243.GE12427@google.com \
--to=jrnieder@gmail.com \
--cc=git@vger.kernel.org \
--cc=meanlogin@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).