Git Cheat Sheet with 40+ commands & concepts

Git Cheat Sheet with 40+ commands & concepts


Tired of memorizing git commands? Here is a cheat sheet with 40+ commands to simplify your life.


1. Initialize a local repository

git init <directory>

The <directory> is optional. If you don't specify it, the current directory will be used.


2. Clone a remote repository

git clone <url>

3. Add a file to the staging area

git add <file>

To add all files in the current directory, use . in place of <file>.

git add .

4. Commit changes

git commit -m "<message>"

If you want to add all changes made to tracked files & commit

git commit -a -m "<message>"


# or


git commit -am "<message>"

5. Remove a file from the staging area

git reset <file>

6. Move or rename a file

git mv <current path> <new path>

7. Remove a file from the repository

git rm <file>

You can also remove it from staging area only using --cached flag

git rm --cached <file>

Basic Git Concepts

Default branch name: main

Default remote name: origin

Current branch reference: HEAD

Parent of HEAD: HEAD^ or HEAD~1

Grandparent of HEAD: HEAD^^ or HEAD~2

13. Display branches

git branch

Useful flags:


-a: Display all branches (local & remote)

-r: Display remote branches

-v: Display branches with last commit

14. Create a branch

git branch <branch>

You can create a branch and switch to it using the checkout command.

git checkout -b <branch>

15. Switch to a branch

git checkout <branch>

16. Delete a branch

git branch -d <branch>

You can also force delete a branch using the -D flag.

git branch -D <branch>

17. Merge a branch

git merge <branch to merge into HEAD>

Useful flags:


--no-ff: Create a merge commit even if the merge resolves as a fast-forward

--squash: Squash all commits from the specified branch into a single commit

Fast forward Merge

Fast-forward-merge


Non-Fast forward Merge

No-fast-forward-merge


It is suggested to not use the --squash flag as it will squash all commits into a single commit, leading to a messy commit history.


18. Rebase a branch

Rebasing is the process of moving or combining a sequence of commits to a new base commit


Rebase

git rebase <branch to rebase from>

19. Checkout a previous commit

git checkout <commit id>

20. Revert a commit

git revert <commit id>

21. Reset a commit

git reset <commit id>

You can also add the --hard flag to delete all changes, but use it with caution.

git reset --hard <commit id>

22. Check out the status of the repository

git status

23. Display the commit history

git log

24. Display the changes to unstaged files

git diff

You can also use the --staged flag to display the changes to staged files.

git diff --staged

25. Display the changes between two commits

git diff <commit id 01> <commit id 02>

26. Stash changes

The stash allows you to temporarily store changes without committing them.

git stash

You can also add a message to the stash.

git stash save "<message>"

27. List stashes

git stash list

28. Apply a stash

Applying the stash will NOT remove it from the stash list.

git stash apply <stash id>

If you do not specify the <stash id>, the latest stash will be applied (Valid for all similar stash commands)


You can also use the format stash@{<index>} to apply a stash (Valid for all similar stash commands)

git stash apply stash@{0}

29. Remove a stash

git stash drop <stash id>

30. Remove all stashes

git stash clear

31. Apply and remove a stash

git stash pop <stash id>

32. Display the changes in a stash

git stash show <stash id>

33. Add a remote repository

git remote add <remote name> <url>

34. Display remote repositories

git remote

Add a -v flag to display the URLs of the remote repositories.

git remote -v

35. Remove a remote repository

git remote remove <remote name>

36 Rename a remote repository

git remote rename <old name> <new name>

37. Fetch changes from a remote repository

git fetch <remote name>

38. Fetch changes from a particular branch

git fetch <remote name> <branch>

39. Pull changes from a remote repository

git pull <remote name> <branch>

40. Push changes to a remote repository

git push <remote name>

41. Push changes to a particular branch

git push <remote name> <branch>

That's all folks! 🎉


Thanks for reading

Comments

Popular posts from this blog

Whiteboarding Interviews

Version Control with Git: A Beginner’s Guide

Callback function in JavaScript