On Mon, Aug 13, 2012 at 5:19 PM, Gordon Smith <gosm...@adobe.com> wrote:

> How does Git make merges better than in SVN?
>
> - Gordon
>
>
In SVN when you make a branch you can essentially move it to any folder
when you choose a location. The /branches folder is the typical target by
convention, but you can place it anywhere in the repository and that's
where your branch goes.

In Git when you branch it is actually a project wide atomic snapshot, that
is, you don't choose a 'location' for your branch, the entire repository
contents are considered a different branch of the project. That is one
fundamental difference.

Git also has 'rebase', which lets you handle merging different than SVN
merging resulting in a much more linear and clearer history. Instead of
having "merge commits" where a bunch of code meets together and is merged a
rebase handles things differently. When you 'rebase' what happens is Git
knows what the 'parent' commit was and it unrolls all of your changes as if
you've just made the new branch, and then it puts them away in a 'stash'.
Git will then retrieve all of the new commits made to the originating
branch, after those are retrieved each commit is re-applied to your branch
in chronological order, allowing you to resolve conflicts as they happen as
if all commits on both branches were occurring one after the other. Because
of this you can handle updating old branches more efficiently and resulting
in a cleaner project repository history.

-omar

Reply via email to