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

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