First of all, congratulations!
In my opinion, one of the most important things that you can do to grow as a developer is to keep asking yourself "Why have I been doing that?"
Remember that when you write git checkout -b <insert_feature_branch_here>
each word gets parsed and processed independently, so starting with git, which tells the console to load git program from the system path, after that, each word gets inputted into the git program.
A quick git --help
allows us to see which types of commands we can input
git --help
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
clone Clone a repository into a new directory
init Create an empty Git repository or reinitialize an existing one
work on the current change (see also: git help everyday)
add Add file contents to the index
mv Move or rename a file, a directory, or a symlink
reset Reset current HEAD to the specified state
rm Remove files from the working tree and from the index
examine the history and state (see also: git help revisions)
bisect Use binary search to find the commit that introduced a bug
grep Print lines matching a pattern
log Show commit logs
show Show various types of objects
status Show the working tree status
grow, mark and tweak your common history
branch List, create, or delete branches
checkout Switch branches or restore working tree files
commit Record changes to the repository
diff Show changes between commits, commit and working tree, etc
merge Join two or more development histories together
rebase Reapply commits on top of another base tip
tag Create, list, delete or verify a tag object signed with GPG
collaborate (see also: git help workflows)
fetch Download objects and refs from another repository
pull Fetch from and integrate with another repository or a local branch
push Update remote refs along with associated objects
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
Now, the command you're interested in is checkout
, if you input:
git checkout --help
You'll see a man page with all the parameters that checkout can receive [branch name, how to resolve conflicts, if you want to force the checkout, etc], the important thing here is that these parameters can be inputted in different orders, so how does git know which word refers to the branch name and which word refers to other parameter?
By using flags such as -b
!
Lets say you input:
git checkout -b mycoolbranch -f
git knows that after -b
every word will be part of the branch's name until another parameter (or end of line) is found.
So basically that's how the -b
(or any other flag in many command tools work)
If you get stuck, --help
is always a good starting point.
Happy coding!