<?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: Merge vs. Rebase &#8211; A deep dive into the mysteries of revision control</title>
	<atom:link href="http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/</link>
	<description></description>
	<lastBuildDate>Fri, 27 Jan 2012 13:31:16 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<item>
		<title>By: Geoffrey</title>
		<link>http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/comment-page-1/#comment-16829</link>
		<dc:creator>Geoffrey</dc:creator>
		<pubDate>Fri, 27 Jan 2012 13:31:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.experimentalworks.net/?p=163#comment-16829</guid>
		<description>Aleksandar, I&#039;ve just read that article you linked, and I can tell you it&#039;s an actually worse explanation.

David&#039;s schemas are right, when you rebase a branch (for example &quot;feature&quot;) on another (let&#039;s say &quot;master&quot;), all commits from &quot;feature&quot; not reachable from &quot;master&quot; are applied to &quot;master&quot;.  Nothing ever gets &quot;uncommited&quot; or whatever nonsense.

You can actually DIY rebase your branch by cherry-pick&#039;ing every commit from &quot;feature&quot; not on &quot;master&quot; to &quot;master&quot; the reset --hard your &quot;feature&quot; branch to the last cherry-pick you did, the end result will be exactly the same than a rebase.

I suggest you read http://think-like-a-git.net/sections/rebase-from-the-ground-up.html to get a good understanding of how rebase works.</description>
		<content:encoded><![CDATA[<p>Aleksandar, I&#8217;ve just read that article you linked, and I can tell you it&#8217;s an actually worse explanation.</p>
<p>David&#8217;s schemas are right, when you rebase a branch (for example &#8220;feature&#8221;) on another (let&#8217;s say &#8220;master&#8221;), all commits from &#8220;feature&#8221; not reachable from &#8220;master&#8221; are applied to &#8220;master&#8221;.  Nothing ever gets &#8220;uncommited&#8221; or whatever nonsense.</p>
<p>You can actually DIY rebase your branch by cherry-pick&#8217;ing every commit from &#8220;feature&#8221; not on &#8220;master&#8221; to &#8220;master&#8221; the reset &#8211;hard your &#8220;feature&#8221; branch to the last cherry-pick you did, the end result will be exactly the same than a rebase.</p>
<p>I suggest you read <a href="http://think-like-a-git.net/sections/rebase-from-the-ground-up.html" rel="nofollow">http://think-like-a-git.net/sections/rebase-from-the-ground-up.html</a> to get a good understanding of how rebase works.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Geoffrey</title>
		<link>http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/comment-page-1/#comment-16828</link>
		<dc:creator>Geoffrey</dc:creator>
		<pubDate>Fri, 27 Jan 2012 13:16:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.experimentalworks.net/?p=163#comment-16828</guid>
		<description>&quot;Git literally take this commits as patches by removing the commits from the history, creating patches out of it and applythem on top of the new branch&quot;

The &quot;removing the commits from the history&quot; part is false, they actually are still in git&#039;s commits graph, but they are now &quot;HEADless&quot; (which means, they cannot be reached from any existing branch and will be collected by git gc at some point). Which means you could very well reset --hard 322ac (I took the commit id from your example) and plain cancel your rebase.

About conflict resolution, git has a command to REcord conflict REsolution and REplay it, it&#039;s called rerere. Could prove handy if you have to solve the same conflict over and over again.</description>
		<content:encoded><![CDATA[<p>&#8220;Git literally take this commits as patches by removing the commits from the history, creating patches out of it and applythem on top of the new branch&#8221;</p>
<p>The &#8220;removing the commits from the history&#8221; part is false, they actually are still in git&#8217;s commits graph, but they are now &#8220;HEADless&#8221; (which means, they cannot be reached from any existing branch and will be collected by git gc at some point). Which means you could very well reset &#8211;hard 322ac (I took the commit id from your example) and plain cancel your rebase.</p>
<p>About conflict resolution, git has a command to REcord conflict REsolution and REplay it, it&#8217;s called rerere. Could prove handy if you have to solve the same conflict over and over again.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aleksandar Kostadinov</title>
		<link>http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/comment-page-1/#comment-16763</link>
		<dc:creator>Aleksandar Kostadinov</dc:creator>
		<pubDate>Sat, 10 Sep 2011 19:50:09 +0000</pubDate>
		<guid isPermaLink="false">http://blog.experimentalworks.net/?p=163#comment-16763</guid>
		<description>Excuse me, I&#039;ve pasted feel link above and I cannot edit the comment. Here&#039;s the correct one: http://www.jarrodspillers.com/2009/08/19/git-merge-vs-git-rebase-avoiding-rebase-hell/</description>
		<content:encoded><![CDATA[<p>Excuse me, I&#8217;ve pasted feel link above and I cannot edit the comment. Here&#8217;s the correct one: <a href="http://www.jarrodspillers.com/2009/08/19/git-merge-vs-git-rebase-avoiding-rebase-hell/" rel="nofollow">http://www.jarrodspillers.com/2009/08/19/git-merge-vs-git-rebase-avoiding-rebase-hell/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aleksandar Kostadinov</title>
		<link>http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/comment-page-1/#comment-16762</link>
		<dc:creator>Aleksandar Kostadinov</dc:creator>
		<pubDate>Sat, 10 Sep 2011 19:48:17 +0000</pubDate>
		<guid isPermaLink="false">http://blog.experimentalworks.net/?p=163#comment-16762</guid>
		<description>Excuse me but these pictures and explanations do not look correct to me (or maybe the way it is explained can only confuse). I am learning git today for the first time but another article [1] makes much more sense to me.

[1] http://jarrodspillers.disqus.com/git_merge_vs_git_rebase_avoiding_rebase_hell_jarrod_spillers/latest.rss</description>
		<content:encoded><![CDATA[<p>Excuse me but these pictures and explanations do not look correct to me (or maybe the way it is explained can only confuse). I am learning git today for the first time but another article [1] makes much more sense to me.</p>
<p>[1] <a href="http://jarrodspillers.disqus.com/git_merge_vs_git_rebase_avoiding_rebase_hell_jarrod_spillers/latest.rss" rel="nofollow">http://jarrodspillers.disqus.com/git_merge_vs_git_rebase_avoiding_rebase_hell_jarrod_spillers/latest.rss</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: FallenGameR</title>
		<link>http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/comment-page-1/#comment-16758</link>
		<dc:creator>FallenGameR</dc:creator>
		<pubDate>Tue, 06 Sep 2011 20:27:33 +0000</pubDate>
		<guid isPermaLink="false">http://blog.experimentalworks.net/?p=163#comment-16758</guid>
		<description>Enjoyed the post ;)</description>
		<content:encoded><![CDATA[<p>Enjoyed the post ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dsp</title>
		<link>http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/comment-page-1/#comment-15284</link>
		<dc:creator>dsp</dc:creator>
		<pubDate>Sat, 28 May 2011 13:01:08 +0000</pubDate>
		<guid isPermaLink="false">http://blog.experimentalworks.net/?p=163#comment-15284</guid>
		<description>Maybe it&#039;s not written correctly, but there are two situations where rebasing can cause more conflicts:
1) If you try to merge a rebased branch with a branch that contains the non rebased changets. In that case you have commits that introduce the same change which will cause a lot of conflicts
2) During rebasing itself. When you rebase a branch and a conflict appears. As far as I know, during a rebase you loose the information of the common ancestor, resulting in a similar merge like SVN would do as it just applies the changes on top of the current working directory, not making use of the common ancestor to resolve parts of the conflict. In that case you might end up with more conflicts.

Otherwise you are absolutly right. Once a you rebased successfully and then merge with a branch, it usually becomes easier and you will have less conflicts as your common ancestor is more recent and thefore you have less changests that can introduce the conflict.</description>
		<content:encoded><![CDATA[<p>Maybe it&#8217;s not written correctly, but there are two situations where rebasing can cause more conflicts:<br />
1) If you try to merge a rebased branch with a branch that contains the non rebased changets. In that case you have commits that introduce the same change which will cause a lot of conflicts<br />
2) During rebasing itself. When you rebase a branch and a conflict appears. As far as I know, during a rebase you loose the information of the common ancestor, resulting in a similar merge like SVN would do as it just applies the changes on top of the current working directory, not making use of the common ancestor to resolve parts of the conflict. In that case you might end up with more conflicts.</p>
<p>Otherwise you are absolutly right. Once a you rebased successfully and then merge with a branch, it usually becomes easier and you will have less conflicts as your common ancestor is more recent and thefore you have less changests that can introduce the conflict.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: david</title>
		<link>http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/comment-page-1/#comment-15283</link>
		<dc:creator>david</dc:creator>
		<pubDate>Fri, 27 May 2011 19:37:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.experimentalworks.net/?p=163#comment-15283</guid>
		<description>Don&#039;t understand what you mean in your deep dive explanation when you say rebasing will produce more conflicts. You make it sound like conflict resolution becomes harder, but surely it gets easier, as you are  splitting your conflicts across multiple commits rather than having to handle them in one changeset merge.</description>
		<content:encoded><![CDATA[<p>Don&#8217;t understand what you mean in your deep dive explanation when you say rebasing will produce more conflicts. You make it sound like conflict resolution becomes harder, but surely it gets easier, as you are  splitting your conflicts across multiple commits rather than having to handle them in one changeset merge.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Basil</title>
		<link>http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/comment-page-1/#comment-15037</link>
		<dc:creator>Basil</dc:creator>
		<pubDate>Sat, 12 Mar 2011 05:59:34 +0000</pubDate>
		<guid isPermaLink="false">http://blog.experimentalworks.net/?p=163#comment-15037</guid>
		<description>Thanks for the article, really helpful.

I think now that I&#039;ll never use rebase.

As far as I see, the only disadvantage of using merge is that there will exist some extra changesets in the repository (corresponding to the stable branch). Is that really a problem?
Are there any other advantages of using rebase which I overlooked?</description>
		<content:encoded><![CDATA[<p>Thanks for the article, really helpful.</p>
<p>I think now that I&#8217;ll never use rebase.</p>
<p>As far as I see, the only disadvantage of using merge is that there will exist some extra changesets in the repository (corresponding to the stable branch). Is that really a problem?<br />
Are there any other advantages of using rebase which I overlooked?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bjarne Christiansen</title>
		<link>http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/comment-page-1/#comment-86</link>
		<dc:creator>Bjarne Christiansen</dc:creator>
		<pubDate>Sat, 07 Mar 2009 12:38:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.experimentalworks.net/?p=163#comment-86</guid>
		<description>&gt; Thanks for sharing - keep up the work!
That should of cause have been:
&quot;Thanks for sharing - keep up the _good_ work!&quot; ;-)</description>
		<content:encoded><![CDATA[<p>&gt; Thanks for sharing &#8211; keep up the work!<br />
That should of cause have been:<br />
&#8220;Thanks for sharing &#8211; keep up the _good_ work!&#8221; ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bjarne Christiansen</title>
		<link>http://blog.experimentalworks.net/2009/03/merge-vs-rebase-a-deep-dive-into-the-mysteries-of-revision-control/comment-page-1/#comment-84</link>
		<dc:creator>Bjarne Christiansen</dc:creator>
		<pubDate>Sat, 07 Mar 2009 12:21:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.experimentalworks.net/?p=163#comment-84</guid>
		<description>&gt; Disclaimer: I never read this article myself
You should, it&#039;s really good! ;-)

Seriously, it&#039;s the best article I have read on rebase so far. Good and important point about the duplicated commits, definitely worth sharing!

It reminded me about the movie &quot;Back to the Future&quot;, you really need to be careful when re-writing history :o) In Mercurial re-writing history can&#039;t be done, unless you enable some ext., there is a good reason for that...

Thanks for sharing - keep up the work!</description>
		<content:encoded><![CDATA[<p>&gt; Disclaimer: I never read this article myself<br />
You should, it&#8217;s really good! ;-)</p>
<p>Seriously, it&#8217;s the best article I have read on rebase so far. Good and important point about the duplicated commits, definitely worth sharing!</p>
<p>It reminded me about the movie &#8220;Back to the Future&#8221;, you really need to be careful when re-writing history :o) In Mercurial re-writing history can&#8217;t be done, unless you enable some ext., there is a good reason for that&#8230;</p>
<p>Thanks for sharing &#8211; keep up the work!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

