Skip to content

Instantly share code, notes, and snippets.

Last active December 7, 2023 02:08
Show Gist options
  • Save neilgee/9442209 to your computer and use it in GitHub Desktop.
Save neilgee/9442209 to your computer and use it in GitHub Desktop.
Git Command Line Reference - Notes, Cheatsheet and reminders on Git set up and commands
* Set up your Git configuration
git config --global ""
git config --global "Your Name"
git config --global core.editor "nano"
git config --global color.ui true
*See Git configuration
git config --list
* To initialise a local repository
git init
* Add a file to the repo
git add <filename>
* Add all the files to the repo
git add .
* Commit the change to git
git commit -m "Message about the change goes here" <filename>
* Commit all changes to git of muliple files - no filenames needed
git commit -am "Message about the change goes here"
* See the commits in a historical linear fashion
git log
* Git has a 3 Tier Architecture: Working - Staging - Repo
* Changes to files are put in a Checksum SHA-1 hash 40digit value containing parent hash, author and message.
* HEAD is the latest commit of the checked out branch
* Basic Commands
git status /* the command 'git status' tells which files are not added or committed from Working to Staging to Repository */
git commit -m "" /* Commits and changes to all files that are in Staging into Repo */
git diff /* show changes between Working and Local Repo, no file supplied shows all files */
git diff --staged /* shows changes between Staged and Local Repo */
git rm file.txt /* will remove file from working then git commit -m "" to also remove from Repo */
git rm --cached file.txt /* leaves copy of file in Working but removes from Staging and Repo */
git mv /* rename or move files - then git commit -m "" to move to Repo */
git commit -am "text goes here" /* adds all files straight to Repo from Staging if they have changes - meaning they skip git add */
git checkout -- file.txt /* restore Repo file to Working Directory using current branch */
git reset --soft HEAD^ /* restore repo file to staging */
git reset HEAD file.txt /* Move a Stage file out of Stage back to Working */
git commit --amend -m "message" file.txt /* Change last commit to Repo (only last one can change) */
/* Reverting --soft --mixed --hard will go back to previous commits*/
git log /* gets the sha1s so you can see the coomits where you want revert back to */
git reset --soft sha /* changes Repo but not Staging or Working */
git reset --mixed sha /* changes Repo and Staging but not Working */
git reset --hard sha /* changes all 3 Tiers */
git clean -f /* remove untracked files from Working */
.gitignore /* ignores files to track in Working / track the .gitignore file */
Global Ignore /* create in home folder */
/* Add in */
git config --global core.excludesfile ~/.gitignore_global /* add to gitconfig */
/* Stop tracking changes */
git rm --cached file.txt /* leaves copy in Repo and Working */
/* Track Folders changes
Add an invisble file to a folder like .gitkeeper then add and commit */
/* Commit Log */
git ls-tree HEAD
git ls-tree master
git log --oneline
git log --author="Neil"
git log --grep="temp"
/* Show Commits */
git show dc094cb /* show SHA1 */
/* Compare Commits */
/* Branches */
git branch /* Show local branch name - the asterisk * is the one we are on */
git branch -r /* Shows remote branches */
git branch -a /* Shows local and remote */
git branch newbranch /* creates a new branch */
git checkout newbranch /* switch to new branch */
git checkout -b oldbranch /* creates and switches to new branch */
git push origin newbranch /* Push new branch to remote */
/* Diff in Branches */
git diff master..otherbranch /* shows diff */
git diff --color-words master..otherbranch /* shows diff in color */
git branch --merged /* shows any merged branches */
/* Rename Branch */
git branch -m oldname newname
/* Delete Branch */
git branch -d nameofbranch
/* Merge Branch */
git merge branchname /* be on the receiver branch to merge the other branch */
/* Merge Conflicts between the same file on 2 branches are marked in HEAD and other branch */
git merge --abort /* Abort basically cancels the merge */
/* Manually Fix Files and commit
The Stash */
git stash save "text message here"
git stash list /* shows whats in stash */
git stash show -p stash@{0} /* Show the diff in the stash */
git stash pop stash@{0} /* restores the stash deletes the tash */
git stash apply stash@{0} /* restores the stash and keeps the stash */
git stash clear /* removes all stash */
git stash drop stash@{0}
* Remotes
* You can push and fetch to the remote server, merge any differences - then push any new to the remote - 3 branches work remote server branch, local origin master and local master
* Create a repo in GitHub, then add that remote to your local repo
* You will need to add a SSH key from your local machine and store it in GitHub - ref:
git remote add origin /* origin can be named whatever followed by the remote */
git remote /* to show all remotes */
git remote show origin /*to see remote URL*/
git remote remove origin /* to remove remote */
git remote rm origin /* to remove remote */
/* Push to Remote from Local */
git push -u origin master /* push to remote(origin) and branch(master)
/* Cloning a GitHub Repo - create and get the URL of a new repository from GitHub, then clone that to your local repo, example below uses local repo named 'nameoffolder' */
git clone nameoffolder
/* Push to Remote from Local - more - since when we pushed the local to remote we used -u parameter then the remote branch is tracked to the local branch and we just need to use... */
git push
git push origin newbranch /* Push a branch to a remote */
/* Fetch changes from a cloned Repo */
git fetch origin /* Pulls down latest committs from remote origin/master not origin, also pull down any branches pushed to Repo
Fetch before you work
Fetch before you pull
Fetch often */
/* Merge with origin/master */
git merge origin/master
git pull /* you can also do git pull which is = git fetch + git merge
Checkout/Copy a remote branch to local */
git branch branchname origin/branchname /* this will bring the remote branch to local and track with the remote */
/* Delete branch */
git branch -d branchname
/* Checkout and switch branch and track to remote */
git checkout -b nontracking origin/nontracking
/* Remove remote branch */
git push origin --delete branch
git checkout path-to-file /*restores a file before it is staged */
git reset HEAD path-to-file /*if it is staged - restores a file from last commit and then git checkout path-to-file */
git checkout HEAD^ path-to-file /*if is staged and committed - restores from last commit */
git reset --hard HEAD^ /*restore prior commit */
/*Keeping the local synced with the origin after the local is reset
* ref
git push --force origin master
git rm --cached filetoremove /* Removes a file that is committed from repo but leaves it still locally - handy when you've added something that you don't want tracked */
/* Undo last push to github - below forces commit entered in to overwrite remote - so in case below origin is local and master is remote*/
git push -f origin last_known_good_commit:master
* Tags
* Adding a Tag
git tag -a v1.0.0 -m "add message here" /*tagging a commit with a version number*/
git push --tags /* pushes tag info to master remote */
/*You can checkout a commit and add a tag to that commit by checking out its SHA */
git checkout f1f4a3d /*checking out a commit - see the commit SHAS by git log */
* Changing Tag to different commit
* Deleting the tag
git tag -d v1.0.0 /*change version number to suit - we are deleting it here*/
git push origin :refs/tags/v1.0.0 /*push change to remote - change 'origin' to your remote name*/
* Adding it again - but this time it would be to the latest commit
git tag v1.0.0 /*create new tag - change version number to suit */
git push origin master --tags /* assign to latest commit - change 'origin' to your remote name*/
* Syncing a Fork
* Have the Fork already created in Github
git clone myfork /* make a local copy of the fork */
/* cd into the repo*/
git remote add upstream /* make an upstream remote repo */
git remote -v /* check all the repos */
git fetch upstream /* get the original repo */
git checkout master /* ensure you in your local master branch */
git rebase upstream/master /* rewrite your local master branch on top of the upstream */
git push -f origin master /* needs -f the first time after rebase */
/* This will result in the fork master branch being 'even' with the original master branch */
* Creating an Upstream Branch from an already added branch
git push --set-upstream dev master /* Here the remote 'dev' branch is set as Upstream to the local 'master' branch */
git branch -vv /* Shows which branch is the Upstream, if you need to change just use the preceeding command again */
* Checking out a Fork with a certain pull request on a new branch
git checkout -b newbranchname
git pull theirbranchname
* Remove Git submodule -
git rm --cached submodule_path # delete reference to submodule HEAD (no trailing slash)
git rm .gitmodules # if you have more than one submodules,
# you need to edit this file instead of deleting!
rm -rf submodule_path/.git # make sure you have backup!!
git add submodule_path # will add files instead of commit reference
git commit -m "remove submodule"
Copy link

Thank you

Copy link

huakwan commented Jan 5, 2018


Copy link

masiama commented Jan 23, 2018

Why file extension is .css?

Copy link

jtrfs commented Oct 10, 2021

Thank you

Copy link


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment