Git Commands

to clone a repository:

git clone my_git_address


list local branches:

git branch

list remote branches:

git branch --remote

Checkout and track a remote branch:

git checkout --track origin/xyz

Push a local branch to a new remote branch name

git push --set-upstream origin <remotebranchname>

delete local git branch

git branch -d <local name>

delete remote branch

git push origin --delete <remote/branch-name>


Sometimes you want to see what has changed. git status can be used to see which files have changed since the last commit. Otherwise, you can use git diff to more closely inspect file changes line by line

git status
git diff
git diff --color=always <commit hash> | less -r


Push a quick commit:

If you created a local branch and need to link it to a remote:

git push --set-upstream origin <localbranchname>
git add *
git commit -m "commit message"
git push

or combined:

git add * && git commit -m "update" && git push


git log

use this to find the commit hash for prior commits. you can use this to reset


reset to head

git reset

reset to specific commit

git reset <hash>

reset index to head and reset files

git reset --hard


interactive clean

git clean -i

force the removal of all untracked files

git clean -dxf


git restore <path/to/file>

restore all files of the type .c

git restore '*.c'



git submodule add <repo_address> <your/local/path>

from here

to pull submodules

git submodule update --init --recursive
git submodule update --recursive --remote

cd into the proper subdirectory ensure you are attached to a branch:

git branch

if not check one out

git checkout [branchname]

feetch all remote tags

git fetch --all --tags

check out tag to a new branch

git checkout tags/<tag> -b <branch>


git checkout tags/Ubuntu-5.13.0-21.21 -b Ubuntu-5.13.0-21.21


echo “docs/lectures/lecture.html” » .gitignore

External references

Remove files from git tree without deleting

git rm --cached path/to/the/file

Stash changes

from here

git stash

git stash --include-untracked

git stash pop

git merge

git checkout master
git merge featureBranch

pull and merge upstream changes into forked branch

git clone path/to/my_repo.git cd my_repo git remote add upstream path/to/upstream_repo.git git fetch upstream

git pull upstream master or git rebase upstream/master

git push –force git push origin main

from here and here

Adding a second remote

git remote add git remote -v git push

git push –set-upstream

git branch –track