Git Commands lists some basic commands that makes working with GIT easier. It’s a go-to cheat-sheet for everyday GIT.
Initialize an empty git repository
git init
Add (stage) all the added/modified files for commit
git add .
To add specific files, use
git add path/to/file1.txt path/to/file2.ts
Commit all the staged files from the above command
git commit -m "your message"
Push the changes to master branch
git push origin master
Push the changes to any other branch
git push origin branch_name
To see all the remote branches and their tracking urls
git remote -v
Add a remote url for tracking
git add remote remote_name your_remote_url
If adding the first remote, set the remote_name preferably to origin like
git add remote origin your_remote_url
Update an already existing remote url
git remote set-url origin new_remote_url
Create a new branch in the local
git branch new_branch_name
git checkout new_branch_name
Can be shortened to
git checkout -b new_branch_name
Push the new branch and the changes to the git repo and also set an upstream for it
git push -u origin new_branch_name
One can also set/change a branch tracking relationship by
git branch -u origin/master // Any remote_name/branch_name
To reset the files that have been added with git add …
git reset HEAD
git reset --soft HEAD^
To reset the files that were committed but not pushed, and still keep the local changes
git reset origin/branch_name
To reset the files that were committed but not pushed, and remove the local changes
git reset --hard HEAD
To reset the files that were committed but not pushed, and remove the local changes – for a particular branch
git reset --hard origin/branch_name
Rename a branch in the local git repo
If on the same branch
git branch -m new_branch_name
If on another branch,
git branch -m old_branch_name new_branch_name
To store the current changes to a pointer and reset the working directory to the HEAD commit, basically a clean working directory
git stash
To stash all the un-tracked files too
git stash --include-untracked
To view a stash, where n is the index of the stash
git stash show n
To have a name based save
git stash save "my stash name"
To recover the changes and write to the working directory.
git stash pop
To retrieve the stash, find the index of the stash (n) that you want to pop
git stash pop stash@{n}
To drop a particular stash without keeping the changes
git stash drop n
Other commands related to stash
git stash list
git stash show
git stash clear
Delete a branch locally
git branch -d branch_name
Delete a remote branch
git push origin --delete branch_name
// origin stands for the remote name. Can be some other name also.
Merge another branch to master
git checkout branch_name
git pull
git checkout master
git pull
git merge --no-ff --no-commit branch_name
Clone a git repo, without actually pulling anything
git clone --bare https://github.com/user/repo.git
Clone a single branch only
git clone some_git_url.git --single-branch --branch=your_branch_name
Add another branch to the single branch repo folder
git remote set-branches --add origin another_branch_name
git fetch
git checkout another_branch_name
See all the git commits in a tree view
git log --graph --oneline --all
// --all for showing all the branches
Merge changes without the commit history. This will stage all the files without the commit, so a custom commit message can be provided.
git merge --squash
Force merge current branch with another overriding it with the current branch
git merge --strategy=ours another_branch
// or the shorthand notation
git merge -s ours another_branch
See all unpushed commits
git log --branches --not --remotes
git log origin/master..HEAD // See what this does
See the commit history of a file
git log -p -- path/to/file
Set email in the git config at the global level
git config --global user.email "email@example.com"
git config --global user.email
Setting email in repository level
git config user.email "email@example.com"
To have a folder level settings, add a .gitconfig file in the folder, and provide the settings. An example file would be:
[user]
name = <your-user-name>
email = <your@email.com>
More GIT related posts can be found here.