Size: 3356
Comment:
|
← Revision 66 as of 2013-12-26 09:53:26 ⇥
Size: 4472
Comment: improved wording of the first sentence
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
'''Named branches''' allow assigning persistent symbolic names to [:Branch:branches] of development inside a single [:Repository:repository]. | <<Include(A:style)>> |
Line 3: | Line 3: |
== Create a Branch == Calling {{{hg branch}}} without a name shows the current branch name of the [:WorkingDirectory:working directory]. Calling {{{hg branch}}} after a {{{hg init}}} outputs "default", the (reserved) name of the default branch: |
= Named branches = '''Named branches''' allow assigning persistent symbolic names to [[Branch|branches]] of development inside a single [[Repository|repository]]. It is neccessary to add, that all branches are actually named, the "unnamed" ones bearing the name "default". <<TableOfContents>> == Find What Branch You're On == Calling {{{hg branch}}} without a name shows the current branch name of the [[WorkingDirectory|working directory]]. Calling {{{hg branch}}} after a {{{hg init}}} outputs "default", the (reserved) name of the default branch: |
Line 12: | Line 19: |
To begin a branch, set the branch name of the working directory and then [:Commit:commit] it: | == Create a Branch == To begin a new branch, set the branch name of the working directory and then commit it: |
Line 15: | Line 23: |
... |
|
Line 29: | Line 39: |
From this point on, all committed [:ChangeSet:changesets] will be associated with the supplied branch name. Unless overridden with the {{{hg branch}}} command, the working directory inherits the branch name associated |
From this point on, all committed [[ChangeSet|changesets]] will be associated with the supplied branch name. Unless overridden with the {{{hg branch other_name}}} command, the working directory inherits the branch name associated |
Line 35: | Line 45: |
=== Create a Branch From an Older Revision === This can be done by updating your working copy to the revision in question and then creating the new branch. {{{ $ hg update -r 500 hg 613 files updated, 0 files merged, 16 files removed, 0 files unresolved $ hg branch newbranch $ hg commit -m 'made a new branch from revision 500' }}} |
|
Line 41: | Line 62: |
$ hg update -C main $ hg update -C newfeature |
$ hg update newfeature $ hg update -C newbranch |
Line 45: | Line 66: |
The {{{hg update}}} command normally allows updating along a single branch in the history. Use the {{{-C}}} option to switch to another. '''Note:''' the {{{-C}}} option also discards local changes, so be careful before using this command. |
By providing a branch name, {{{hg update}}} will update your working copy to the tip on this branch. '''Note:''' the {{{-C}}} option discards local changes, so be careful before using this option. |
Line 50: | Line 70: |
When [:Merge:merging] with another branch, the local branch name takes precedence: | When [[Merge|merging]] with another branch, the local branch name takes precedence: |
Line 53: | Line 73: |
$ hg branch newfeature $ hg in remote |
$ hg up newfeature $ hg incoming http://example.net/repos/remote |
Line 57: | Line 76: |
changeset: 3900:3be94ff00829 | changeset: 3901:3be94ff00829 |
Line 65: | Line 84: |
$ hg pull remote pulling from remote |
$ hg pull http://example.net/repos/remote pulling from http://example.net/repos/remote |
Line 73: | Line 92: |
Line 80: | Line 100: |
Branch names can be used anywhere that tag names can, including log, diff, [:Push:push], and [:Pull:pull]. When a branch has multiple [:Head:heads], the [:Tip:tipmost] revision of the branch will be found. Here are some examples: | Branch names can be used anywhere that tag names can, including log, diff, [[Push|push]], and [[Pull|pull]]. When a branch has multiple [[Head|heads]], the [[Tip|tipmost]] revision of the branch will be found. Here are some examples: |
Line 84: | Line 104: |
main 3900:3be94ff00829 | main 3901:3be94ff00829 newbranch 3900: ... |
Line 86: | Line 107: |
Line 87: | Line 109: |
changeset: 3900:3be94ff00829 | changeset: 3901:3be94ff00829 |
Line 94: | Line 116: |
Line 99: | Line 122: |
== Delete Branches == PruningDeadBranches |
|
Line 100: | Line 125: |
== Links == * [http://hgbook.red-bean.com/hgbookch8.html Managing releases and branchy development] |
== Undoing a Bad Merge == |
Line 103: | Line 127: |
See also: [:MultipleHeads] [:Branch] | Mercurial does not yet offer a foolproof way to back out an erroneous merge. The latest information I've been able to find on this matter is at http://stackoverflow.com/questions/265944/backing-out-a-backwards-merge-on-mercurial and is currently marked unresolved. == See also == * [[http://hgbook.red-bean.com/read/managing-releases-and-branchy-development.html|Managing releases and branchy development]] * [[MultipleHeads]] * [[Branch]] * [[Bookmarks]] * [[MutableBranches]] ---- CategoryHowTo |
|
Named branches
Named branches allow assigning persistent symbolic names to branches of development inside a single repository. It is neccessary to add, that all branches are actually named, the "unnamed" ones bearing the name "default".
Contents
Find What Branch You're On
Calling hg branch without a name shows the current branch name of the working directory. Calling hg branch after a hg init outputs "default", the (reserved) name of the default branch:
$ hg init $ hg branch default
Create a Branch
To begin a new branch, set the branch name of the working directory and then commit it:
... $ hg branch newfeature marked working directory as branch newfeature $ hg branch newfeature $ hg ci -m "start feature branch" $ hg parents changeset: 3899:c08bfc770d37 branch: newfeature tag: tip user: Matt Mackall <mpm@selenic.com> date: Tue Dec 19 14:20:11 2006 -0600 summary: start feature branch
From this point on, all committed changesets will be associated with the supplied branch name. Unless overridden with the hg branch other_name command, the working directory inherits the branch name associated with a changeset. This way, a sequence of changesets will typically all have the same branch name.
When Mercurial lists a changeset, it will only show the branch name associated with the changeset if the branch name differs from the reserved branch name "default".
Create a Branch From an Older Revision
This can be done by updating your working copy to the revision in question and then creating the new branch.
$ hg update -r 500 hg 613 files updated, 0 files merged, 16 files removed, 0 files unresolved $ hg branch newbranch $ hg commit -m 'made a new branch from revision 500'
Switch Among Branches
Switch among branches using the hg update command:
$ hg update newfeature $ hg update -C newbranch
By providing a branch name, hg update will update your working copy to the tip on this branch. Note: the -C option discards local changes, so be careful before using this option.
Merge Branches
When merging with another branch, the local branch name takes precedence:
$ hg up newfeature $ hg incoming http://example.net/repos/remote searching for changes changeset: 3901:3be94ff00829 branch: main tag: tip parent: 3898:93e5f07baf75 user: Matt Mackall <mpm@selenic.com> date: Tue Dec 19 14:26:52 2006 -0600 summary: bug fix $ hg pull http://example.net/repos/remote pulling from http://example.net/repos/remote searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (+1 heads) (run 'hg heads' to see heads, 'hg merge' to merge) $ hg merge 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg branch newfeature
Branch names can be used anywhere that tag names can, including log, diff, push, and pull. When a branch has multiple heads, the tipmost revision of the branch will be found. Here are some examples:
$ hg branches main 3901:3be94ff00829 newbranch 3900: ... newfeature 3899:c08bfc770d37 $ hg log -r main changeset: 3901:3be94ff00829 branch: main tag: tip parent: 3898:93e5f07baf75 user: Matt Mackall <mpm@selenic.com> date: Tue Dec 19 14:26:52 2006 -0600 summary: bug fix $ hg in -r main ../bd2 searching for changes no changes found
Delete Branches
Undoing a Bad Merge
Mercurial does not yet offer a foolproof way to back out an erroneous merge. The latest information I've been able to find on this matter is at http://stackoverflow.com/questions/265944/backing-out-a-backwards-merge-on-mercurial and is currently marked unresolved.