DevOps Essentials

View on GitHub



git - the content tracker


git [–version] [–help] [-C ] [-c =] [--exec-path[=]] [--html-path] [--man-path] [--info-path][-p|--paginate|--no-pager] [--no-replace-objects][--bare][--git-dir=] [--work-tree=][--namespace=][--super-prefix=] []


Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.


Create a new repository using the command line

git init
git clone https://repository-url
git pull origin <branch-name>

To push the changes to the master branch

Points worth noting here

git remote show origin
git add .
git status
git commit -m "Name-for-this-commit"
git push -u origin master

Incase you want to change the origin url then you can use the command

git remote show origin
git remote set-url origin https://repository-url
git remote add origin https://repository-url


Tell Git who you are

git config --global "Sam Smith"
git config --global

Create a new local repository

git init

Checkout a repository

git clone /path/to/repository

For a remote server, use:

git clone username@host:/path/to/repository

Add one or more files to staging (index):

git add <filename>
git add *
git add .

Commit changes to head (but not yet to the remote repository)

git commit -m "Commit message"

Commit any files you’ve added with git add, and also commit any files you’ve changed since then:

git commit -a

Send changes to the master branch of your remote repository:

git push origin master

List the files you’ve changed and those you still need to add or commit:

git status

If you haven’t connected your local repository to a remote server, add the server to be able to push to it:

git remote add origin <server>

List all currently configured remote repositories:

git remote -v

Create a new branch and switch to it:

git checkout -b <branchname>

Switch from one branch to another:

git checkout <branchname>

Other Essential commands

List all the branches in your repo, and also tell you what branch you’re currently in:

git branch

Delete the feature branch:

git branch -d <branchname>

Push the branch to your remote repository, so others can use it:

git push origin <branchname>

Push all branches to your remote repository:

git push --all origin

Fetch and merge changes on the remote server to your working directory:

git pull

To merge a different branch into your active branch:

git merge <branchname>

View all the merge conflicts:

git diff

View the conflicts against the base file:

git diff --base <filename>

Preview changes, before merging:

git diff <sourcebranch> <targetbranch>

After you have manually resolved any conflicts, you mark the changed file:

git add <filename>

You can use tagging to mark a significant changeset, such as a release:

git tag 1.0.0 <commitID>

CommitId is the leading characters of the changeset ID, up to 10, but must be unique. Get the ID using:

git log

Push all tags to remote repository:

git push --tags origin

If you mess up, you can replace the changes in your working tree with the last content in head:

Changes already added to the index, as well as new files, will be kept.

git checkout -- <filename>

Instead, to drop all your local changes and commits, fetch the latest history from the server and point your local master branch at it, do this:

git fetch origin
git reset --hard origin/master

Search the working directory for foo():

git grep "foo()"

To un-commit the changes you have recently committed to local. Note the “" is due to the shell.

git reset --soft HEAD\^

To check the size of you git repo

$ git bundle create tmp.bundle --all
$ du -sh tmp.bundle
 19M    tmp.bundle