Git cheatsheet for beginners
Tags: git, programming, beginners, codenewbie
Published: 2020-01-08 11:03:38

This article was originally published at <a href="https://www.blog.duomly.com/git-cheatsheet/">Git cheatsheet</a>

---

Git is a very useful skill to have and almost necessary in many companies. Browsing job offers for software engineers, you many realize that knowing git is nearly as important as knowing an actual programming language. But still many people forget to check out how git works and what commands are responsible for what action.

When some time ago, I created a simple Git and Github tutorial for Youtube, I noticed how many people were interested in this topic.

This is why today, I decided to create a simple cheat sheet with the basic git commands which you can take a look at and use whenever you’ve just forgotten what you have to put inside the command line or need to refresh your memory. Also, I would like to go through some basic terms every developer should know to understand git-flow.

In the end, I will also tell you about the GUIs for git, which I used some time ago or use right now and which I really like because of their simplicity.

If you don't know how to set up a git repository, check out our Youtube tutorial.

{% youtube 70e58se9lHk %}

Let’s start!

<h4>A few basic terms which help to understand git commands</h4>

**repository** keeps all your project's files, including commits and branches.

**branch** is a copy of the repository holding the specific version. The main branch in git is master.

**commit** may be imagined as a single save of changes to the specific branch.

**checkout** is the operation of switching between the current branch and the one specified in the command.

**master** is the main branch of the repository.

**merge** is an action that adds changes from one branch to another.

**fork** is a copy of the repository.

**head** is the most recent commit of the repository you work with.

<h4>Basic git commands everyone should know</h4>

```git init | git init [folder]```

Git init is used to initialize an empty repository from the folder you are currently using this command or using folder path, both ways are correct. It’s used while starting a new project or if you want to initialize the git repo inside the existing project.

```git clone [repo URL] [folder]```

Git clone is used to copy the existing repository to the specified folder on your computer. Git clone can be used only with repo URL as a parameter, then it will copy the repository to the folder from where you used the command. If you want to copy the repository to a different location on your computer, add a folder path as a second parameter.

```git add [directory | file]```

Git add stage all changes in the directory or in the file, and it depends on what you add as a parameter. In most cases, it's followed by git commit and git push commands.

```git commit -m "[message]"```

This command is used to commit all staged changes with the custom message passed as a string. By changing -m parameter to -am it's possible to add and commit changes at once.

```git push```

This is the command, which pushes changes to the origin branch.

```git status```

Git status is used to check the status of the modified files and it shows which files are staged, unstaged, and untracked.

```git log```

Git log is used to display the history of the commit in the default format.

```git diff```

Git diff shows all unstaged differences between the index and the current directory. This command can be used with -staged to display differences between staging files and the most recent versions. And another option is to use the command with the file name to display differences between the file and in the last commit.

```git pull```

Git pull is used to get changes from the original branch, and it merges the changes into the local branch.

```git fetch```

This command retrieves the most recent changes from the origin branch but doesn't merge.

<h4>Git branch commands</h4>

```git branch```

This command displays the list of all branches in the repository. It can also create a non-existing branch if you add a branch name as a parameter.

```git branch -d [branchname]```

Using -d flag will delete the branch with the specified branch name.

```git checkout [branchname]```

This command switch to the branch named [branchnamed]. If you add -b flag before branch name, it will checkout to a new branch, which will be created automatically.

```git merge [branchname]```

It merges the branch with the specified branch name to the current branch.

<h4>Git undoing changes commands</h4>

```git revert [commit]```

This command creates a new commit that undoes changes made in the specified commit and applies it to the current branch.

```git reset [filename]```

It remotes specifies a file from the staging and leaves the working directory unchanged.

<h4>Git config commands</h4>

```git config -global user.email [user_email]```
```git config -global user.name [user_name]```

The commands above are used to set current user email and name configuration.

```git config --global --edit```

And this command is very useful, as it allows for editing user configuration in a text editor.

<h4>Git GUIs</h4>

Not everyone likes to use git in the command line. It's very easy to make a mistake there, which will take some time to revert it. That's why GUIs for git become very popular. Let's check a few of them.

**Sourcetree**

<a href="https://www.sourcetreeapp.com/">
![Duomly - Programming Online Courses](https://thepracticaldev.s3.amazonaws.com/i/ejqjp7lkwdihbn9bxtdu.png)
</a>

Sourcetree is a git GUI which is available for Mac and Windows, and it's free. I really like it's UI, and it makes using git much easier for me, as I can see all the changes very clearly.

**Tower**

<a href="https://www.git-tower.com/mac">
![Duomly - Programming Online Courses](https://thepracticaldev.s3.amazonaws.com/i/0s03zy77io93n9whn5tt.png)
</a>

Tower is another great tool that makes using git nice and easy. It's also available for both Mac and Windows, but this one is not free. I had a chance to use it, they have a trial option, so everyone can try this software and check all its advantages.

**Github Desktop**

<a href="https://desktop.github.com/">
![Duomly - Programming Online Courses](https://thepracticaldev.s3.amazonaws.com/i/mity9a4ev6u3son002tw.png)
</a>

Github Desktop is another competitive tool, allowing us to use git in a nice and user-friendly way. It's also available for both Mac and Windows. Also, it's an open-source app, and it's free to use.

<h4>Conclusion</h4>

In this article, I went through the most basic git commands to keep it in one place and make it easy for you to check it and use it. Also, I listed a few terms which understanding may be very helpful to understand what's happening behind some of the commands. In the end, I've presented three GUIs that I had an opportunity to use. In my opinion, using git GUI may be very helpful, especially for junior programmers, who don't feel comfortable width command line yet and for those who like to have an easier and more visible way of working with git.

If you would like to learn how to create your first git repository in Github, check out this Youtube video, where I also share some information about git GUIs.

Have a nice coding!

<a href="https://www.duomly.com">
![Duomly - Programming Online Courses](https://thepracticaldev.s3.amazonaws.com/i/mbd4eeevdu6u4or8x1nk.png)
</a>

Thank you for reading,
Anna from Duomly