<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Git: You are in the middle of a conflicted merge.</title>
	<atom:link href="http://anarchogeek.com/2008/08/01/git-you-are-in-the-middle-of-a-conflicted-merge/feed/" rel="self" type="application/rss+xml" />
	<link>http://anarchogeek.com/2008/08/01/git-you-are-in-the-middle-of-a-conflicted-merge/</link>
	<description></description>
	<lastBuildDate>Sat, 11 Feb 2012 01:13:10 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Ha$H</title>
		<link>http://anarchogeek.com/2008/08/01/git-you-are-in-the-middle-of-a-conflicted-merge/comment-page-1/#comment-2069</link>
		<dc:creator>Ha$H</dc:creator>
		<pubDate>Tue, 15 Mar 2011 14:55:15 +0000</pubDate>
		<guid isPermaLink="false">http://anarchogeek.com/2008/08/01/git-you-are-in-the-middle-of-a-conflicted-merge#comment-2069</guid>
		<description>Thank you, thank you, thank you so much :) Very useful article.</description>
		<content:encoded><![CDATA[<p>Thank you, thank you, thank you so much <img src='http://anarchogeek.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Very useful article.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron Newton</title>
		<link>http://anarchogeek.com/2008/08/01/git-you-are-in-the-middle-of-a-conflicted-merge/comment-page-1/#comment-2054</link>
		<dc:creator>Aaron Newton</dc:creator>
		<pubDate>Wed, 13 Jan 2010 16:36:00 +0000</pubDate>
		<guid isPermaLink="false">http://anarchogeek.com/2008/08/01/git-you-are-in-the-middle-of-a-conflicted-merge#comment-2054</guid>
		<description>If you have your diff editor configured you can just type &quot;git mergetool&quot; and it&#039;ll open the first conflicted file in that editor (you don&#039;t even have to paste in the path; it just does the first one). On OSX, it throws it to FileMerge, which 90% of the time is all I need.

When you&#039;re done and save your file, close the editor (close it entirely, not just the window) and go back to your shell. The editor will have exited and the terminal should have moved on to the next file, hit enter and it launches again, repeat.

When you&#039;re done continue with your steps above (add them, commit them). You&#039;ll likely have some .orig files to clean up, but that&#039;s usually not that tough.</description>
		<content:encoded><![CDATA[<p>If you have your diff editor configured you can just type &#8220;git mergetool&#8221; and it&#8217;ll open the first conflicted file in that editor (you don&#8217;t even have to paste in the path; it just does the first one). On OSX, it throws it to FileMerge, which 90% of the time is all I need.</p>
<p>When you&#8217;re done and save your file, close the editor (close it entirely, not just the window) and go back to your shell. The editor will have exited and the terminal should have moved on to the next file, hit enter and it launches again, repeat.</p>
<p>When you&#8217;re done continue with your steps above (add them, commit them). You&#8217;ll likely have some .orig files to clean up, but that&#8217;s usually not that tough.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Brown</title>
		<link>http://anarchogeek.com/2008/08/01/git-you-are-in-the-middle-of-a-conflicted-merge/comment-page-1/#comment-2050</link>
		<dc:creator>William Brown</dc:creator>
		<pubDate>Sat, 02 Jan 2010 03:53:06 +0000</pubDate>
		<guid isPermaLink="false">http://anarchogeek.com/2008/08/01/git-you-are-in-the-middle-of-a-conflicted-merge#comment-2050</guid>
		<description>I understand the frustration that it doesn&#039;t &quot;just work&quot;, but what exactly do you expect it to do?  You asked git to merge, it tried, but it couldn&#039;t figure out the correct merge automatically.

So it gives you the same working directory file containing conflict markers that CVS or SVN do (I like to enable &quot;merge.conflictsyle=diff3&quot;), and, in addition, three original versions (both merge heads plus the common ancestor) in the index.

Basically, the final fallback merge algorithm is &quot;stop and ask the user what to do&quot;.

And then it avoids doing any *more* damage until the unfinished merge situation is resolved somehow.  Anyone who&#039;s accidentally checked a file *with* conflict markers into CVS will tell you how handy that safety feature is.

You can always abandon the merge with &quot;git reset --hard&quot; and try again later.

You can add cleverer and cleverer merge heuristics, but you can&#039;t find one that will *always* do the right thing, so you will always need a manual fallback.  I mean, if branch A refactored function foo() one way and branch B did it a different way, there&#039;s no way for software to do that automatically.

(In fact, Linus has specifically avoided such cleverness because it carries with it an unpleasant risk of quietly doing the *wrong* thing.)

But I&#039;m unclear on what better solution you expect.</description>
		<content:encoded><![CDATA[<p>I understand the frustration that it doesn&#8217;t &#8220;just work&#8221;, but what exactly do you expect it to do?  You asked git to merge, it tried, but it couldn&#8217;t figure out the correct merge automatically.</p>
<p>So it gives you the same working directory file containing conflict markers that CVS or SVN do (I like to enable &#8220;merge.conflictsyle=diff3&#8243;), and, in addition, three original versions (both merge heads plus the common ancestor) in the index.</p>
<p>Basically, the final fallback merge algorithm is &#8220;stop and ask the user what to do&#8221;.</p>
<p>And then it avoids doing any *more* damage until the unfinished merge situation is resolved somehow.  Anyone who&#8217;s accidentally checked a file *with* conflict markers into CVS will tell you how handy that safety feature is.</p>
<p>You can always abandon the merge with &#8220;git reset &#8211;hard&#8221; and try again later.</p>
<p>You can add cleverer and cleverer merge heuristics, but you can&#8217;t find one that will *always* do the right thing, so you will always need a manual fallback.  I mean, if branch A refactored function foo() one way and branch B did it a different way, there&#8217;s no way for software to do that automatically.</p>
<p>(In fact, Linus has specifically avoided such cleverness because it carries with it an unpleasant risk of quietly doing the *wrong* thing.)</p>
<p>But I&#8217;m unclear on what better solution you expect.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

