20 Git Commands Every Developer Should Know
Tags: git, tutorial, webdev, programming
Published: 2022-07-21 13:51:00

20 Git Command I Use All The Time — Git CheatSheet

In this article, I just want to lay down a quick cheat sheet. It will include commands that I shared in that first article, but it will also include some new git commands. Recently, for various senior projects, I have been collaborating with different teams. There are a few commands that have become a staple for me.

So let's get started:

**1. git init**
This command is used to initialize a project as a git repository.

**2. git remote add origin <link-to-github-remote-repo>**
Example:

```
git remote add origin https://github.com/MrKrishnaAgarwal/Git-CheatSheet.git
```

This command is used to add or connect to a remote repository.

**3. git remote**
This command is used to view connected remote repositories.

**4. git status**
This command is used to view the status of files in your local repository. Are files tracked? untracked? modified?

**5. git add <file name>**
Example:

```
git add index.html
```

```
git add index.html style.css style.scss
```

This command is used to stage modified or untracked files.

**git add -a**
This command is used to stage ALL unstaged files.

**6. git reset**
This command is used to unstage files.

**7. git commit**
This command is used to commit staged files.

**git commit -m “<commit message here”>**
Example:

```
git commit -m "added navigation bar"
```
This command is used to commit staged files AND provide a commit message for the commit history.

**git commit --amend**

The git commit --amend command is a convenient way to modify the most recent commit.

**8. git push -u origin <branch-name>**
Example:

```
git push -u origin master
```

This command is used to push committed files to the remote repository(aka GitHub) in the specified branch. Use this command for the very first time you push files to the remote repository. It will establish where you are pushing these files to. The next time(s) you push files, you can use git push

**git push**
This command is used to push committed files to the remote repository. You can only use this command to push files to the remote repository AFTER having pushed files using the previous command.

**9. git fetch**
This command is used to fetch the most updated version of your local repository. It checks for new files, new branches, deletions etc.

**10. git pull**
This command is used to take that information you just fetched and pull it into your local repository. This updates your local repository to the most updated version of your remote repository.

**11. git rm -r — cached <fileName>**
Example:
```
git rm -r --cached config.js
```
This command is used to remove a file from the remote repository(GitHub) without deleting it in your local repository.

12. **git branch**
This command is used to preview the branch you are currently on

**git branch -a**
This command is used to preview all the branches in your local and remote repository.

**git branch -r**
This command is used to preview all the branches in your local repository (aka branches you have already visited).

**git branch <branch-name>**
This command is used to create a new branch in your local repository.

**13. git checkout — track origin/<branch-name>**
Example:

```
git checkout --track origin/develop
```
This command is used to switch branches. This is specifically for when you are visiting a branch (created in GitHub/remote repository) for the very first time.

**14. git checkout <branch-name>**
Example:
```
git checkout master
git checkout develop
```
This command is used to switch to branches you have already visited before.

**15. git merge <branch name>**
This command is used to merge two branches together. To do this, enter the branch that you want to inherit the changes. And the branch name you would use along with this command is the branch that will provide the changes.

Example: master branch will inherit code from develop branch

```
git merge develop
```
**16. git merge — abort**
This command is used to abort a merge.

If there are no conflict errors, merges will always be successful. Ergo, this abort can only be used in situations where a merge failed.

How will you know this can be used?

For starters, your terminal will say merge failed. It may also tell you to fix the merge conflicts.

Here is another sign:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uyupdt4e9feh7jyqy8kz.png)

Look at the very end of the first line. In parentheses, it says `(master)`. This is because we are in the master branch. If you are in the develop branch, it would say `(develop)`.

If your merge fails, it will say `(master|merging)` or something like that. Maybe it says merge or maybe it’s a forward slash or maybe you’re in another branch. Regardless, you get the idea.

This indicates your merge failed.

`git merge --abort` would just abort the merge entirely.

**17. git merge -X theirs <branch name>**
Example:

```
git merge -X theirs develop
```

This command is used to merge two branches together. And if there are merging conflicts, this command will just assume that you’d prefer the changes made in the mentioned branch (rather than the current one).

**18. git reset — hard HEAD**
This command will erase all the changes you’ve made in your local repository and update it to the latest version that was committed to GitHub.

**19. git clean -f**
This command is used to delete untracked files in your local repository

**20. git clean -d**
This command is used to delete untracked directories in your local repository. You can also combine it into git clean -fd to do both.

- **Suggested by people in comments**

**21. git bisect**

The git bisect command is used to discover the commit that has introduced a bug in the code. It helps track down the commit where the code works and the commit where it does not, hence, tracking down the commit that introduced the bug into the code.

**22. git reset HEAD^**

This command moves the current branch backward by two commits, effectively removing the two snapshots we just created from the project history. it reverts an accidental commit and keep the changes.

**23. git diff**

Diff command is used in git to track the difference between the changes made on a file.

**24. git rebase**

Rebasing is especially useful if you worked on a branch, but then need to apply the changes of that branch on top of the latest main or release branch. With a git rebase you can "move" your branch on top of the latest release. It is also useful if the team (or you yourself) are following common conventions for commits, like squashing commits together or splitting out "big" commits into "smaller" ones. It's basically for "reorganizing" your commits.

**git rebase -i HEAD~N**

To rebase the last N commits interactively. From there you can decide what action to apply on each commit: pick, reword, squash etc.

**25. git stash**

Stashing is good when you are working on a branch, but then you need to switch to another branch, but you're not ready yet to make a full commit on your current branch because the current code is "messy". So you stash them, switch to the other branch, come back to your original branch, then unstash your changes.

**26. git reflog**

git reflog is important when you did something wrong and really messed up your commits. 

**27. git cherry-pick**

Cherry picking in Git means to choose a commit from one branch and apply it onto another.
This is in contrast with other ways such as merge and rebase which normally apply many commits onto another branch.

```
git cherry-pick <commit-hash>
```

**Thank you for reading! If you have some commands that you use all the time, please share them!**

**If you found this helpful, make sure to show your support with a like, and if you want to help others in their projects, a share would be greatly appreciated! Let me know what you think about this! Happy Learning!**

**More commands can be found here:**

{% embed https://education.github.com/git-cheat-sheet-education.pdf %}
Follow me on [GitHub](https://github.com/MrKrishnaAgarwal) and DEV.