Size: 3432
Comment: Separated the information on finding your current branch into its own section.
|
← 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)>> = 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>> |
Line 4: | Line 11: |
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: | 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 13: | Line 20: |
To begin a new branch, set the branch name of the working directory and then [:Commit:commit] it: | To begin a new branch, set the branch name of the working directory and then commit it: |
Line 16: | Line 23: |
... |
|
Line 30: | 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 36: | 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 42: | Line 62: |
$ hg update -C main $ hg update -C newfeature |
$ hg update newfeature $ hg update -C newbranch |
Line 46: | 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 51: | 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 54: | Line 73: |
$ hg branch newfeature $ hg in remote |
$ hg up newfeature $ hg incoming http://example.net/repos/remote |
Line 58: | Line 76: |
changeset: 3900:3be94ff00829 | changeset: 3901:3be94ff00829 |
Line 66: | Line 84: |
$ hg pull remote pulling from remote |
$ hg pull http://example.net/repos/remote pulling from http://example.net/repos/remote |
Line 74: | Line 92: |
Line 81: | 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 85: | Line 104: |
main 3900:3be94ff00829 | main 3901:3be94ff00829 newbranch 3900: ... |
Line 87: | Line 107: |
Line 88: | Line 109: |
changeset: 3900:3be94ff00829 | changeset: 3901:3be94ff00829 |
Line 95: | Line 116: |
Line 100: | Line 122: |
== Delete Branches == PruningDeadBranches |
|
Line 101: | Line 125: |
== Links == * [http://hgbook.red-bean.com/hgbookch8.html Managing releases and branchy development] |
== Undoing a Bad Merge == |
Line 104: | Line 127: |
See also: [:MultipleHeads], [:Branch], [:Bookmarks] | 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]] |
|
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.