What is git?
Git (/ɡɪt/) is a version control system
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.
Create a new directory somewhere on your system
$ mkdir ~/Desktop/git-test && cd ~/Desktop/git-test
Create something for git to track
$ echo "This is a README" > README
Setup git in this directory
$ git init -> Initialized empty Git repository in /Users/you/Desktop/git-test/.git/
Git is now initialized in this directory and can start to track changes to files.
It has created a hidden directory inside the folder where it keeps track of all changes, you can see it if you type
ls -la. The git repository is entirely self contained and does not depend on any other file outside of the folder.
Now that we have set up git what can we do with it?
One useful command we could try is the
$ git status -> On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) README nothing added to commit but untracked files present (use "git add" to track)
Nice. Git just gave us some very useful information!
It told us that we have no commits yet, and also that we have an Untracked file. Let’s go ahead and
add this file so git can start to track it.
Add untracked files to git using the
$ git add README
Let’s ask git about its status again
$ git status -> On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README
We can see that the status has changed. The file is now to git in a state called “staged”.
In order for git to begin to track it we need to
commit command tells git that we want to record the current state of its staged files.
$ git commit -m "Initial commit" -> [master (root-commit) 9319ba3] Initial commit 1 file changed, 1 insertion(+) create mode 100644 README
We passed the
-m flag in order to supply a commit message from the command line. Its common to call the first commit “Initial commit”. The initial commit is also known as the “root commit”, from where our tree of recorded changes will grow.
Let’s take a look at the status again
$ git status -> On branch master nothing to commit, working tree clean
Life-cycle of file changes
Summary of what we know so far
||Initialize a git repository|
||Add files for git to track|
||Commit files and/or changes to files|
The content of this post was presented on a c0dereview meetup in December 2017, you can view the slides from the presentation here.
Illustrations from Pro Git Book (CC BY 3.0)