Git/merge

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< Git
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

About

Action: join two or more branches together

In its simplest form, git merge lets you assimilate {changes that were committed to another branch} into the current branch:

  • git checkout <current-branch> - just to be sure we're starting with no uncommitted changes (a "clean" state)
  • git merge <other-branch> - assimilate changes from <other-branch> into this one

This is also done (or attempted) automatically when pull is used.

Things to remember:

  • It's better to have all changes committed before you try a merge.
  • If the merge fails, you can "back out" with git merge --abort.
  • If things get too ugly and you just want to revert to a known state, git reset --hard <commit> blows away all uncommitted changes and reverts to the given commit.
    • Note: I think "commit" might refer to a specific hash value, not a branch name.

Process

If a merge attempt is not successful, the local file will be marked up with notes indicating the differences between versions. The markup format seems to be:

<<<<<<< HEAD
text of local version
=======
text of remote version
>>>>>>> long hexadecimal identifier

(Tentatively:) If you attempt a commit while any of these markers are still in place, Git will refuse to commit and will list the files with unresolved differences.

Auto-Merge

During a pull:

  • Git will attempt to "auto-merge" each conflicting file (i.e. merge from the remote branch into the current one).
  • For each file, there will be a message saying whether the merge was successful (as above).

Outlinks

Documentation

How To