Git is a version control system that is widely used for software development and other version control tasks. It is a distributed revision control system with an emphasis on speed, data integrity, and support for distributed, non-linear workflows. Git was initially designed and developed in 2005 by Linux kernel developers (including Linus Torvalds) for Linux kernel development.
Git GUI client for all major platform (Windows, Linux, OS-X etc) are available on the official Git SCM web site.
Getting Started
Configure user information for all local repositories |
git config --global user.name "[name]" |
Sets the name you want atached to your commit transactions |
git config --global user.email "[email address]" |
Sets the email you want atached to your commit transactions |
git config --global color.ui auto |
Enables helpful colorization of command line output |
Start a new repository or obtain one from an existing URL |
git init [project-name] |
Creates a new local repository with the specified name |
git clone [url] |
Downloads a project and its entire version history |
Working with Local Branch
Review edits and craf a commit transaction |
git log |
See all commits |
git log --no-merges [branch-name].. |
See only changes made on particular branch |
git log --pretty=format:"%h %s" --graph |
Pretty commit view |
git status -s |
Lists all new or modified files to be commited |
git status |
Short view of status |
git diff |
Shows file differences not yet staged |
git add [file] |
Snapshots the file in preparation for versioning |
git add . |
Add all modified files to be commited |
git add '*.txt' |
Add only text files |
git diff --staged |
Shows file differences between staging and the last file version |
git reset [file] |
Unstages the file, but preserve its contents |
git commit -m "[descriptive message]" |
Records file snapshots permanently in version history |
Name a series of commits and combine completed efforts (Branching) |
git branch |
Lists all local branches in the current repository |
git branch [branch-name] |
Creates a new branch |
git checkout [branch-name] |
Switches to the specified branch and updates the working directory |
git checkout -b [new-branch-name] |
Checkout current branch into a new branch |
git merge [branch] |
Combines the specified branch’s history into the current branch |
git branch -d [branch-name] |
Soft deletes the specified branch |
git branch -D [branch-name] |
Hard deletes the specified branch |
Comparing changes |
git diff |
See current changes, that have not been staged yet. |
git diff HEAD |
See current changes, that have not been commited yet (including staged changes) |
git diff branch-name |
Compare current branch to some other branch |
git diff [first-branch]...[second-branch] |
Compare two different branches |
git show [commit] |
Outputs metadata and content changes of the specified commit |
Erase mistakes and craf replacement history |
git reset [commit] |
Undoes all commits afer [commit], preserving changes locally |
git reset --hard [commit] |
Discards all history and changes back to the specified commit |
Shelve and restore incomplete changes |
git stash |
Temporarily stores all modified tracked files |
git stash pop |
Restores the most recently stashed files |
git stash list |
Lists all stashed changesets |
git stash drop |
Discards the most recently stashed changeset |
Working with Remote Branch
Manage Remote Branch |
git remote |
See list of remote repos available. |
git remote -v |
Detailed view of remote repos, with their git urls |
git remote add origin [https://some-git-remote-url] |
Add a new remote. I.e. origin if it is not set |
Synchronize Changes |
git push |
Push current branch to remote branch |
git push [alias] [branch] |
Uploads all specific local branch commits to remote |
git fetch |
Downloads all history from the remote repository |
git branch -a |
See the list of all remote branches |
git pull |
Just like pushing, you can get the latest updates from remote. |
git pull [alias] [branch] |
Pull a specific branch |
Reference