Git/merge: Difference between revisions
from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< Git
another relevant chapter |
I think I understand more about how this works now, so clarifying my explanation. |
||
| Line 1: | Line 1: | ||
'''Action''': join two or more | ==About== | ||
'''Action''': join two or more {{l/same|branch}}es together | |||
In its simplest form, '''git merge''' lets you assimilate {changes that were {{l/same|commit}}ted to another branch} into the current branch: | |||
* <code>git checkout {{arg|current-branch}}</code> - just to be sure we're starting with no uncommitted changes (a "clean" state) | |||
* <code>git merge {{arg|other-branch}}</code> - assimilate changes from {{arg|other-branch}} into this one | |||
This is also done (or attempted) automatically when {{l/same|pull}} is used. | |||
Things to remember: | Things to remember: | ||
| Line 7: | Line 13: | ||
* If the merge fails, you can "back out" with <code>git merge --abort</code>. | * If the merge fails, you can "back out" with <code>git merge --abort</code>. | ||
* If things get too ugly and you just want to revert to a known state, <code>git {{l/same|reset}} --hard {{arg|commit}}</code> blows away all uncommitted changes and reverts to the given commit. | * If things get too ugly and you just want to revert to a known state, <code>git {{l/same|reset}} --hard {{arg|commit}}</code> 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== | ==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. | |||
* Git will attempt to "auto-merge" each conflicting file. | ===Auto-Merge=== | ||
* For each file, there will be a message saying whether the merge was successful | During a <code>{{l/same|pull}}</code>: | ||
* 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== | ==Outlinks== | ||
===Documentation=== | ===Documentation=== | ||
Latest revision as of 10:44, 19 July 2018
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).
