DEV Community

Cover image for A Git Cheatsheet Of Commands Every Developer Should Use

A Git Cheatsheet Of Commands Every Developer Should Use

Ravi Mengar on December 10, 2020

GIT is the most widely used distributed open-source Version Control System that allows you to track and manage changes made to the files locally on...
Collapse
 
myrtletree33 profile image
jhtong

Another command I would add is Git Rebase:

git rebase origin/master
Enter fullscreen mode Exit fullscreen mode

Which would apply all the changes in master, below your branch, to make your commits grouped together and more organized.

Also, I use this quite a lot:

git rebase -i HEAD~2
Enter fullscreen mode Exit fullscreen mode

Which runs your rebase in interactive mode for the most recent 2 commits (which is really helpful for squashing and renaming your commits), making it more readable.

Collapse
 
eecolor profile image
EECOLOR

In practice I have noticed more problems arise when using rebase. These problems come up when you work as a team in a branch or have merged other branches (and solved conflicts).

We now have the policy that you are only allowed to rebase if the code has not been pushed to the remote. We also prevent push --force which is required for most rebases.

Collapse
 
ravimengar profile image
Ravi Mengar • Edited

Hey, jhtong

Thanks for letting me know about these commands. Will surely make use of it. Appreciate your help manπŸ‘

Collapse
 
liliang8858 profile image
edwin_ew

nice

Collapse
 
_arisharyanto profile image
Aris Haryanto • Edited

also you need to add

git stash
Enter fullscreen mode Exit fullscreen mode

when you want to keep your working progress without commit then you need to switch to other branch

and

git stash pop
Enter fullscreen mode Exit fullscreen mode

to put their back to your file

i think this is important if you work with some branch

Collapse
 
loebkes profile image
Lui

I often use git stash save -m "name" instead as I can give the stash a name for easier identification later on

Collapse
 
i386net profile image
i386net

It's deprecated and it's recommended to use git stash push -m instead

Collapse
 
ravimengar profile image
Ravi Mengar

Hey, Aris

Thanks for highlighting the above helpful commands. Will surely make use of it πŸ‘

Collapse
 
bew profile image
Benoit de Chezelles

Nice cheatsheet!

For git status you say Files changed in working directory, I think it's wrong, git status gives you the status of the current branch and the files of the whole repo, not just the working directory! For working directory status, you'd do git status .

Also checkout the subcommand git worktree (and its various options), I use it a lot to check something in another branch, review whole branches for a pr of someone else, or other cases. It allows me to have 2+ branches checked out at the same time, sharing the history graph!

Collapse
 
picwellwisher12pk profile image
Amir Hameed

git am -3 patch.mbox (In case of conflict, resolve the conflict and)
git am --resolve

can you elaborate these?

Collapse
 
ravimengar profile image
Ravi Mengar • Edited

Hey Amir,

Here, I've tried to elaborate your question,

  1. git am - Apply a series of patches from a mailbox.

  2. git am -3 patch : By default the command will try to detect the patch format automatically. This option allows the user to bypass the automatic detection and specify the patch format that the patch(es) should be interpreted as. Valid formats are mbox, mboxrd, stgit, stgit-series and hg.
    ( the -3 will do a three-way merge if there are conflicts )

  3. git am --resolve : When a patch failure occurs, will be printed to the screen before exiting. This overrides the standard message informing you to use --continue or --skip to handle the failure. This is solely for internal use between git rebase and git am.

I hope this will help you !!!

Collapse
 
loebkes profile image
Lui

I often use git branch --merged to identify branches that I can delete as I have already merged them. Same goes for --no-merged to find out if I've forgotten to merge some features.

Collapse
 
harshilparmar profile image
Harshil Parmar

Awesome !!! πŸ‘ŒπŸ™Œ

Collapse
 
hasii2011 profile image
Humberto A Sanchez II

This is very nice. I made a PDF out of this page

Collapse
 
ravimengar profile image
Ravi Mengar • Edited

I'm glad that you found this helpful.πŸ˜ƒ

Collapse
 
jazzthedog profile image
Jazz

I think 'git switch' is now more in favor than 'git checkout'? I use that to mainly switch between branches.