'\" t .\" Title: git-new-branch .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 10/26/2021 .\" Manual: Chromium depot_tools Manual .\" Source: depot_tools 5c9e8b47 .\" Language: English .\" .TH "GIT\-NEW\-BRANCH" "1" "10/26/2021" "depot_tools 5c9e8b47" "Chromium depot_tools Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" git-new-branch \- Create a new branch with correct tracking information\&. .SH "SYNOPSIS" .sp .nf \fIgit new\-branch\fR \fIgit new\-branch\fR \-\-upstream_current \fIgit new\-branch\fR \-\-upstream \fIgit new\-branch\fR \-\-lkgr \fIgit new\-branch\fR \-\-inject_current .fi .sp .SH "DESCRIPTION" .sp Creates a new branch\&. By default the new branch will track the configured upstream for the repo (defaults to \fIorigin/main\fR)\&. If one of the other options is specified, it will track that other ref instead\&. .sp Conceptually, each branch in your repo represents one \fIChange List (CL)\fR\&. If you have many independent CLs (i\&.e\&. the changes in one do not interact with/depend on the changes in another), then you should create them as new branches tracking the default upstream (i\&.e\&. \fBgit new\-branch \fR)\&. If you have features which depend on each other, you should create stacked branches using \fBgit new\-branch \-\-upstream_current \fR\&. .SH "OPTIONS" .PP \-\-upstream_current .RS 4 Set the tracking (upstream) branch to the currently\-checked\-out branch\&. .RE .PP \-\-upstream .RS 4 Set the tracking (upstream) branch to \&. may be a local branch, remote branch, or a tag\&. .RE .PP \-\-lkgr .RS 4 Alias for \fB\-\-upstream lkgr\fR\&. .RE .PP \-\-inject_current .RS 4 Set the tracking (upstream) branch of the newly\-created branch to the tracking (upstream) branch of the currently\-checked\-out branch and set the tracking (upstream) branch of the currently\-checked\-out branch to the newly\-created branch\&. .sp .if n \{\ .RS 4 .\} .nf Before: current > upstream After: current > new > upstream .fi .if n \{\ .RE .\} .RE .PP .RS 4 The name for the new branch\&. .RE .SH "CONFIGURATION VARIABLES" .SS "depot\-tools\&.upstream" .sp This configures the default \fIupstream\fR for all new branches\&. If it is unset, it defaults to \fIorigin\fR\*(Aqs default branch or \fIorigin/main\fR if that can\(cqt be found\&. This is considered to be the \fIroot\fR branch\&. .SH "EXAMPLE" .sp .sp .if n \{\ .RS 4 .\} .nf \fB$ git map\-branches \-v\fR origin/main cool_feature [ 4 commits ] subfeature [ 2 commits | behind 1 ] fixit [ 2 commits ] \fB frozen_branch * [ 3 commits ] $ git new\-branch independent_cl\fR \fB$ git map\-branches \-v\fR \fBorigin/main \fR cool_feature [ 4 commits ] subfeature [ 2 commits | behind 1 ] fixit [ 2 commits ] frozen_branch [ 3 commits ] \fB independent_cl * $ vi foo && git add \-A && git commit \-m foo\fR \fB$ git map\-branches \-v\fR origin/main cool_feature [ 4 commits ] subfeature [ 2 commits | behind 1 ] fixit [ 2 commits ] frozen_branch [ 3 commits ] \fB independent_cl * [ 1 commit ] $ git new\-branch \-\-upstream subfeature nested_cl\fR \fB$ git map\-branches \-v\fR origin/main cool_feature [ 4 commits ] \fB subfeature [ 2 commits | behind 1 ] \fR\fB\fB(1)\fR\fR\fB nested_cl * \fR fixit [ 2 commits ] frozen_branch [ 3 commits ] independent_cl [ 1 commit ] \fB$ git checkout cool_feature\fR Switched to branch \*(Aqcool_feature\*(Aq Your branch is ahead of \*(Aqorigin/main\*(Aq by 4 commits\&. (use "git push" to publish your local commits) \fB$ git new\-branch \-\-upstream_current cl_depends_on_cool_feature\fR \fB$ git map\-branches \-v\fR origin/main \fB cool_feature [ 4 commits ] cl_depends_on_cool_feature * \fR subfeature [ 2 commits | behind 1 ] nested_cl fixit [ 2 commits ] frozen_branch [ 3 commits ] independent_cl [ 1 commit ] \fB$ git checkout subfeature\fR Your branch and \*(Aqcool_feature\*(Aq have diverged, and have 2 and 1 different commits each, respectively\&. (use "git pull" to merge the remote branch into yours) \fB$ git new\-branch \-\-inject_current injected_cl\fR \fB$ git map\-branches \-v\fR origin/main \fB cool_feature [ 4 commits ] cl_depends_on_cool_feature injected_cl * \fR subfeature [ 2 commits | behind 1 ] nested_cl fixit [ 2 commits ] frozen_branch [ 3 commits ] independent_cl [ 1 commit ] .fi .if n \{\ .RE .\} .sp .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} Note that these branches are cyan because they are currently the same \fIcommit\fR object\&. See \fBgit-map-branches\fR(1) for more detail\&. .RE .SH "SUGGESTED ALIASES" .sp Some common short\-hand aliases\&. Feel free to add these to your \fI~/\&.gitconfig\fR file\&. .sp .if n \{\ .RS 4 .\} .nf [alias] nb = new\-branch tb = new\-branch \-\-upstream_current \fB(1)\fR .fi .if n \{\ .RE .\} .sp .sp \fB1. \fRmnemonic: tb \(-> "track branch" .br .SH "SEE ALSO" .sp \fBgit-rebase-update\fR(1), \fBgit-reparent-branch\fR(1), \fBgit-rename-branch\fR(1), \fBgit-upstream-diff\fR(1) .SH "CHROMIUM DEPOT_TOOLS" .sp Part of the chromium \fBdepot_tools\fR(7) suite\&. These tools are meant to assist with the development of chromium and related projects\&. Download the tools by checking out the \m[blue]\fBgit repository\fR\m[]\&\s-2\u[1]\d\s+2\&. .SH "NOTES" .IP " 1." 4 git repository .RS 4 \%https://chromium.googlesource.com/chromium/tools/depot_tools.git .RE