10 Git Commands to get you started with Open source
Tags: beginners, github, git
Published: 2021-03-14 16:23:18


Git is an important part of daily programming (especially if you're working with a team) and is widely used in the software industry.

Since there are many various commands you can use, mastering Git takes time. But some commands are used more frequently (some daily).

## 1. Git Clone
Git clone is a command for downloading existing source code from a remote repository (like Github, for example). In other words, Git clone basically makes an identical copy of the latest version of a project in a repository and saves it to your computer. One of the ways is the **clone with https** way:


`git clone <https://github.com/Anu-MADMAX/Visualizing-Covid-19.git>`


This will make a copy of the project to your local workspace so you can start working with it.

## 2. Git Branch
Branches are highly important in the git world. By using branches, several developers are able to work in parallel on the same project simultaneously. We can use the git branch command for creating, listing and deleting branches.

**Creating a new branch:**


`git branch <branch-name>`


This command will create a branch **locally**. To push the new branch into the remote repository, you need to use the following command:


`git push -u <remote-branch-name> <branch-name>`

**Viewing Branches:**

`git branch`  **OR**  `git branch --list`

**Deleting a branch:**

`git branch -d <branch-name>`

## 3.Git Checkout

This is also one of the most used Git commands. To work in a branch, first you need to switch to it. We use git checkout mostly for **switching from one branch to another.** We can also use it for checking out files and commits.

`git checkout <branch-name>`

**The shortcut command that allows you to create and switch to a branch at the same time is:**

`git checkout -b <branch-name>`

This command creates a new branch in your local (-b stands for branch) and checks the branch out to the new one right after it has been created.

## 4.Git Status

The Git status command gives us all the necessary information about the current branch. 


`git status`

We can gather information like:
- If the current branch is up to date
- If there is anything to commit, push or pull
- If there are files staged, unstaged or untracked
- If there are files created, modified or deleted


## 5.Git Add
When we create, modify or delete a file, these changes will happen in our local and won't be included in the next commit (unless we change the configurations).

We need to use the git add command to include the changes of a file(s) into our next commit. 

**To add a single file:**

`git add <file-name>`


**To add everything at once:**

`git add -A`

When you visit the screenshot above in the 4th section, you will see that there are file names that are red - this means that they're unstaged files. The unstaged files won't be included in your commits.

**To include them, we need to use git add.**
**Important: The git add command doesn't change the repository and the changes are not saved until we use git commit.**

## 6.Git Commit

This is maybe the most-used command of Git. Once we reach a certain point in development, we want to save our changes (maybe after a specific task or issue).

Git commit is like setting a checkpoint in the development process which you can go back to later if needed.

We also need to write a short message to explain what we have developed or changed in the source code.

`git commit -m "Type in your message here"`

**Important: Git commit saves your changes only locally.**

## 7.Git Push
After committing your changes, the next thing you want to do is send your changes to the remote server. Git push uploads your commits to the remote repository.

`git push <remote> <branch-name>`

However, if your branch is newly created, then you also need to upload the branch with the following command:

`git push --set-upstream <remote> <branch-name>`

**OR**

`git push -u origin <remote> <branch-name>`

**Important: Git push only uploads changes that are committed.**

## 8.Git Pull

The git pull command is used to get updates from the remote repo. This command is a combination of **git fetch** and **git merge** which means that, when we use git pull, it gets the updates from remote repository (git fetch) and immediately applies the latest changes in your local (git merge).

`git pull <remote>`

**This command may cause conflicts that you need to resolve manually.**


## 9.Git Revert

Sometimes we need to undo the changes that we've made. There are various ways to undo our changes locally or remotely (depends on what we need), but we must carefully use these commands to avoid unwanted deletions.

A safer way that we can undo our commits is by using git revert. To see our commit history, first we need to use `git log -- oneline`

Then we just need to specify the hash code next to our commit that we would like to undo:

`git revert <hash-code>`

After this, you will see a screen - just press shift + q(Q) to exit.
The Git revert command will undo the given commit, but will create a **new commit** without deleting the older one.


The **advantage** of using `git revert` is that it doesn't touch the commit history. This means that you can still see all of the commits in your history, even the reverted ones. 

Another safety measure here is that everything happens in our local system unless we push them to the remote repo. That's why git revert is safer to use and is the preferred way to undo our commits.

## 10.Git Merge

When you've completed development in your branch and everything works fine, the final step is merging the branch with the parent branch (dev or master). This is done with the `git merge` command.

Git merge basically integrates your feature branch with all of its commits back to the dev (or master) branch. It's important to remember that you first need to be on the specific branch that you want to merge with your feature branch.

For example, when you want to merge your feature branch into the dev branch:

**First you should switch to the dev branch:**

`git checkout dev`
**Before merging, you should update your local dev branch:**

`git fetch`
**Finally, you can merge your feature branch into dev:**

`git merge <branch-name>`

**Hint: Make sure your dev branch has the latest version before you merge your branches, otherwise you may face conflicts or other unwanted problems.**

###Anddd, YOU DID IT! :clap:

So these are my 10 most-used git commands that I come across in my daily programming. Of course, there's a lot more to git than just these commands, so feel free to explore them and learn more!

### Follow me for more such blogs! :star: