Login

About

This page talks about Branch management in Git.

For Git, a branch is:

Example of commit log (or log):

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

What is a Head ?

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

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

A branch name is just a ref (A name attached to a commit sha).

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

See remote branch

Tag

Fork

See:

Usage / Strategy

Creating two features branch:

  • heart glasses
  • cowboy hat

Branches Git

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

More see Workflow

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

Github Branch

Management

The git docs/git-branch.html command lists, creates, or delete branches.

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)

When merging two branches, Git check the commit sha of the branche ref and add the missing's one accordingly.

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:

  • fetch synchronize the local and remote repo
  • Checkout change the working branch

From a tag

See Tag

Switch

  • Switch does not require a clean index and working tree (i.e. no differences compared to HEAD)
  • The working tree and the index are updated to match the branch.
  • All new commits are added to the tip of this branch.
git switch

Example:

  • After working in the wrong branch, switching to the correct branch would be done using:
git switch -m mytopic

where m performs a three-way merge

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 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







Share this page:
Follow us:
Task Runner