The Linux terminal and version control
The Linux terminal and version control
2. Git basics
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.
What is VCS? (Git-SCM) • Git Basics #1 from GitHub on Vimeo.
Getting a Git Repository
You typically obtain a Git repository in one of two ways:
-
You can take a local directory that is currently not under version control, and turn it into a Git repository, or
-
You can clone an existing Git repository from elsewhere.
In either case, you end up with a Git repository on your local machine, ready for work. Here we will explain how to do the second.
Cloning an Existing Repository
If you want to get a copy of an existing Git repository — for
example, a project you’d like to contribute to — the command you need is
git clone
.
Every version of every file for the history of the project is pulled
down by default when you run git clone
.
In fact, if your server disk gets corrupted, you can often use nearly
any of the clones on any client to set the server back to the state it
was in when it was cloned.
You clone a repository with git clone <url>
.
For example, if you want to clone the Git linkable library called libgit2
, you can do so like this:
git clone https://github.com/libgit2/libgit2
That creates a directory named libgit2
, initializes a .git
directory inside it, pulls down all the data for that repository, and checks out a working copy of the latest version.
If you go into the new libgit2
directory that was just created, you’ll see the project files in there, ready to be worked on or used.
If you want to clone the repository into a directory named something other than libgit2
, you can specify the new directory name as an additional argument:
git clone https://github.com/libgit2/libgit2 mylibgit
That command does the same thing as the previous one, but the target directory is called mylibgit
.
content adapted from git-scm.com