News Stay informed about the latest enterprise technology news and product updates.

How and when to perform a depth 1 git clone

git-clone@ubuntu:~$ git clone --depth 1

In the world of continuous integration builds and continuous delivery pipelines, it’s not unusual to require a depth 1 git clone in your DevOps routines.

When you perform a dept 1 git clone operation, the only thing you pull back from the remote repository is the latest commit on your specific git branch of interest. By default, it’s the master branch that gets cloned and checked out, but you can alter this behavior through the use of the –branch switch and providing a branch name after it.

Why use a depth 1 git clone?

A git clone depth 1 operation isn’t something a typical software developer will need to do. When programming, it is useful to have a complete git history, along with the ability to inspect any git branch being used for parallel feature development. But continuous integration builds and automation scripts rarely need a commit history. They usually only need one commit on a specific branch, along with any associated git submodules, and that’s what a depth 1 git clone provides.

How to do a git clone of depth 1

The list of steps to perform a git clone of depth 1 are:

  1. Copy the clone URL of the remote repository
  2. Include the –depth 1 switch in the git clone operation
  3. Optionally specify the name of the branch to clone with the –branch switch
  4. Run the shallow git clone command in the terminal window
  5. Perform a git log –oneline operation to verify the clone depth

It’s worth noting that the depth 1 clone operation only pulls done one branch. If the remote repository contains other branches, you will not be able to check them out locally without a pathspec error.

git clone depth 1 pathspec

After a git clone depth 1 operation, attempts to checkout an alternate branch will trigger a pathspec error.

Shallow clone to a directory

For continuous integration routines that need to perform a depth 1 git clone for multiple branches at the same time, one option is to clone each branch  into a separate folder.

depth1@ubuntu:~$ git clone --depth 1  --branch develop develop-folder
depth1@ubuntu:~$ git clone --depth 1  --branch hotfix hotfix-folder
depth1@ubuntu:~$ git clone --depth 1  --branch release release-folder
depth1@ubuntu:~$ git clone --depth 1  --branch master master-folder

The depth 1 git clone is not an operation a software developer will normally have to pull out of their bag of DevOps tricks. But when writing build scripts or continuous integration pipelines, a shallow git clone of the highest order can really come in handy and relive the DevOps team of having to run future Git clean up operations.

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.