Git - Branch

About

Branch management in Git.

A branch is:

         CA1--CA2--CA3 <-- Branch A (last commit CA3)
        /
 C1--C2--C3 <-- master (last commit C3)
        \
         CB1--CB2 <-- Branch B (last commit CB2)

The term “branch head” (or just “head”) reference to the most recent commit on a branch. In the example above, the branch head of:

  • the branch A is the commit CA3
  • the branch B is the commit CB2

If you are not on a last commit, you are no more on a branch, you are in a detached mode

The git branch lists, creates, or delete branches.

Because the commit log is a directed acyclique graph, each leaf commit is a branch

Name

The identification of branch may have a / or a space

remote/name
  • With a space, , you're referring to a remote branch (branch on a remote machine over the network)
remote name

Type

Local

A local branch is a branch that exists only on your computer.

A local tracking branch is a local branch that is tracking another branch.

Remote Tracking

Remote

Tag

Fork

Usage / Strategy

Creating two features branch:

  • heart glasses
  • cowboy hat

Each feature is added back to the master individually. So if glasses are finished before the cowboy hat, no problem.

More see Git - Workflow (Branching Strategy)

Example of lifecycle

Example of workflow

# Create a feature branch
git checkout -b feature-myfeature develop
# Merge your work
git checkout develop
git merge --no-ff feature-myfeature
# Delete your branch
git branch -d feature-myfeature
# Integrate your work into the master repo
git push origin develop

Management

Working / Current

The working or current branch is the branch actually in the working tree.

More… see current

Rename

Create

Update

Keeping your branch current with a parent branch (master for instance)

Example:

Update the master / main branch

  • Switch to the local copy of master
git checkout master
git fetch origin
:: git fetch upstream
git merge origin/master
:: git merge usptream/master

Update the branch (Rebase)

  • Go to the branch (ie checkout the files for this branch from the repository)
git checkout branchName
git rebase master

Ctrl + T shortcut on IDEA

Fetch

fetch all the remote branches from origin

git fetch origin

List

git branch --remotes
# or
git branch -r

Checkout

Check out an existing branch

Remote Checkout

cd path/to/git/repository
git fetch origin
git checkout brancheName
git checkout brancheName
Switched to a new branch 'brancheName'
Branch 'brancheName' set up to track remote branch 'brancheName' from 'origin'.

The branch is now a remote tracking branch (a local branch that tracks the remote branch

where:

From a tag

See Git - Tag

In case of modification

Stash

stash

git stash # keep the modification in a stash branch
git pull # get the last one
git stash pop # Destash the modification

Revert to head

Revert to the head of the upstream/master branch

git reset --hard upstream/master

Switch

See Git - Checkout

git checkout branchName
Switched to branch 'branchName'

Share

When you want to share a branch with the world, you need to push it up to a remote that you have write access to.

git push <remote> <branch>

Delete

  • delete branch locally
git branch -d branchName
  • delete a branch remotely with push
git push origin --delete branchName

Documentation / Reference


Powered by ComboStrap