DEV Community

Cover image for Useful Git Commands
samconibear
samconibear

Posted on • Edited on

Useful Git Commands

Git is a fantastic technology that not only provides historical tracking of source code throughout development, but also enables multiple developers to work on the same project without stepping on each others feet.

I wanted to create a sort of cheat sheet for git commands that I find myself using often. I will continue to update this post as I discover other handy git commands.


Starter Git Commands:

1. Create and checkout a new branch

git checkout -b <branch>
Enter fullscreen mode Exit fullscreen mode

2. Discard changes to a file.

git checkout -- <file>
Enter fullscreen mode Exit fullscreen mode

3. Rename a local branch

git branch -m <oldName> <newName>
Enter fullscreen mode Exit fullscreen mode

4. Merge a specified branch into the currently checked out branch.

git merge <branch>
Enter fullscreen mode Exit fullscreen mode

GIT MERGE


More Git Commands:

1. Stage all changes

git add -A 
Enter fullscreen mode Exit fullscreen mode

stage all new, modified or removed files to the working tree. Note this is different to git add . which only stages new and existing files.

2. Review all changes

git diff HEAD
Enter fullscreen mode Exit fullscreen mode

The same as git diff but reviews all changes rather than just those unstaged.

3. Remove a file from the repo but keep it in your project directory

git rm --cached <filename>
Enter fullscreen mode Exit fullscreen mode

Very useful when you have files you don't want tracked that you forgot to specify in .gitignore that have previously committed. After adding them to .gitignore run this command to ensure they are removed from the repo without deleting them from your local project directory.

4. Reset all local files to the last commit

git reset --hard
Enter fullscreen mode Exit fullscreen mode
DANGER - exercise caution when using this command as it has the potential to throw away hours of work.

I often find I have uncommitted changes in a branch I've been messing around in (whitespace, print statements) git doesn't let you checkout another branch with uncommitted changes so this is a quick way to reset your project directory to the HEAD.

5. Undo the last commit

git reset --hard HEAD^
Enter fullscreen mode Exit fullscreen mode
DANGER - Can also cause unintentional loss of work.

We've all made commits we immediately regret... Use this command to destroy the changes from the last commit.

6. Modify the previous commit

git commit --amend -m <newMsg>
Enter fullscreen mode Exit fullscreen mode

Adding the -m option allows you modify the previous commit message. You can also stage new changes to the commit and the previous commit will inherit them.

7. Remove all branches that no longer exist on remote

git branch --merged | egrep -v "(^\*|master|main|<branchToSave>)" | xargs git branch -d
Enter fullscreen mode Exit fullscreen mode
DANGER - this will delete any newly created branches that have not yet been pushed to the remote repo. be sure to specify special cases as in <branchToSave>.

This can be used to clean up your local repository if you have lots of old branches that have since been merged. If you want to learn how this works see this great stack overflow post.

8. Cache git credentials for a set amount of time

git config credential.helper 'cache --timeout 28800' # 8hrs
Enter fullscreen mode Exit fullscreen mode

This saves you entering your git user/password every time you want to push/pull
The --global flag can be added to do this across all repositories.

9. Remove a committed file from a branch / PR

git checkout <main_branch> -- <path_to_file>
Enter fullscreen mode Exit fullscreen mode

Top comments (0)