Git Basics
This is a practical git tutorial for beginner, focus on the commands that are used daily by every programer.

git help
output.
Most Frequently Used Git Commands
Following are the most frequently used commands. Those with a star ★ are use daily.
To begin, you either create a new project, or “clone” a project from a URL.
Command | Purpose |
---|---|
git init | Create a git repository in current dir. This will create a directory named “.git” in current dir. The “.git” directory holds all git's internal data. |
git clone url_or_path | Clone the repository from url_or_path to current dir. “clone” basically means copy. The url_or_path can be a local directory/folder path that contains “.git”. |
Once you have a project, you edit to make changes, then you need to “add” to a staging area, then “commit”. (these are done to your local repository.)
Command | Purpose |
---|---|
★ git status | Show current status. (that is, list changed files.) |
★ git add . | Add changes from current dir to local repository's staging area. |
★ git commit -m"message" | Commit changes after add, to local repository. The message is a short description of changes you made. |
To get update from a server, or put your changes to a server , you need to “pull/push”.
Command | Purpose |
---|---|
★ git pull | Pull from remote to your local repository. |
★ git push | Push your local repository to remote. |
Note: all git operations are done to the local repository. The only exception is git pull
and git push
.
Set Up Name and Email Info
First, you need to setup a default name and email. Else, git won't let you commit.
Everytime you commit, your user name and email is in part of the commit info. This allows git to show who did what, when working in a team. That's why user name and email are required. (you can use random name and email if you want)
# set up default name and email git config --global user.name "Mary Lee" git config --global user.email "mary@example.com"
the above will create a file at ~/.gitconfig
. You can run these commands again to change. (you can also edit the file directly.)
Create a Project
How to create a project?
cd project_dir
→ cd to the directory of your source code.git init
→ create a.git
dir in the current dir. This dir holds all git's data about the current project.git add .
→ add current dir (and subdir) files into git staging area.git commit -m"first commit"
→ commit to local repository.
Important: when using git, you should always cd the directory first. This is in contrast to traditional unix commands, where you can simply give the directory's full path.
Example:
# cd to the dir containing your code cd my_project # initialize. This creates a .git dir. git init # add all files to “staging area” git add . # commit to local repository. git commit -m"my first commit"
Git will create a dir named .git
in the same dir. This dir is used by git for all its info, including its database.
Note: as of , Adding 20k files takes about 6 minutes. Commiting 20k files takes 6 minutes.
Clone a Project
Clone a projet is similar to creating a git project, except it's for when there's a existing git repository. Clone a project similar to the concept of “copy”.
How to clone a project?
cd to a directory where you want the new project dir to be, then:
git clone source_path_or_url
Example:
# get a copy of git source code (~10MB) git clone git://git.kernel.org/pub/scm/git/git.git
# get a copy of the js jquery source code git clone https://github.com/jquery/jquery.git
git clone url_or_path
→ creates a dir in the current dir with the remote repo's content. The newly created dir will have the same name as project name of the remote repository at url_or_path. If a non-empty directory of the same name already exist, git will complain.
Note to svn users: git also has a “checkout” command. It's used for updating/reverting your current dir from a repository (a older version, or different branch, etc.). git checkout
is similar to svn merge
and svn revert
.
[see svn Tutorial]
Git Ignore File
Some files you want git to ignore, such as emacs backup files, compiled binary files, error logs, etc. You can set up git to ignore those files.
Commit a File
Git Tutorial: Committing Files
Push to Remote Repository
Pull (Get Update) from Remote Repository
Get Update from Remote Repository: git pull
View Commit History/Log
Revert from Local Repository
git diff Between {Working Dir, Staged Area, Last Commit}
Git: Diff Between {Working Dir, Staged Area, Last Commit}
git Frequently Asked Questions
git Frequently Asked Questions
How to Branch
Save Working Dir in a Temp Storage
Git: Save Working Tree in a Temp Storage: git stash
Tagging Files
How to tag a version?
git tag "version number or any label"
This will tag the current state of your local repository. (not the index/“staging area”) You probably want to do a commit before you tag.
Setting up git on GitHub, Google Code, GitCafe
- Git: Setting Up Git on GitHub
- Git: Setting Up git on bitbucket
- Git: Setting up git on GitCafe
- Convert Your code.google.com Project from svn to git
- Retro-Put Backup Directories to git as Historical Commits
Git in Emacs
Reference
man git
man gittutorial
man gitglossary
man gitworkflows
man gitcore-tutorial
Patreon me $5. Ask me question on patreon