# Useful git commands

> I've compiled a list of helpful Git commands that I found useful as a beginner. These commands can come in handy while you're learning Git and trying to improve your workflow.

## Few golden rules while you’re working with git.

1. Always pull from the remote repository before you push your files to the remote.
    
2. Use git status to see the status of your local repo after/before pull/push.
    
3. Generally, we work on the development branch rather than the master branch. TL/PM should merge the files from the development to the master branch after reviewing them. You can create a branch if you’re working on a new module from scratch.
    
4. You can draft (called stash) your changes in your local repo using git stash commands if you don’t want to push the changes now.
    

## Configure git user in your system

Register your identity in your local system using the below commands

```bash
git config --global user.name "user_name"
git config --global user.email "user_email"
```

## Git initialization

If you have created a new directory and want to initiate git in the newly created directory, run below commands

```bash
cd /path/to/my/directory
git init
```

## Branching in Git

When you initiate git in a new directory using git init, automatically master branch will get created. Though if you want to create a new branch you can use git checkout -b to create a new branch and switch to the newly created branch.

Use the following commands to show a list of branches

```bash
git branch 
or 
git branch -a
```

If there is a branch with the name **branch\_name** on the remote repo but not in your local repo. Use this command to update your local repo and switch to a new branch:

```bash
git fetch && checkout <branch_name>Git pull command
```

Run the below command to pull code differences from a branch name and merge them in your code

```bash
git pull origin <branch_name>
Ex: git pull origin development
```

## Git Add and commit

If you’ve modified some files in your local repository, you need to add them to git before pushing them to the remote repo. Add a file to git using

```bash
git add <file_name>
```

Add all modified files to git using

```bash
git add . 
Or 
git add -A
```

Commit files using

```bash
git commit -m "commit message"
```

Check the status using

```bash
git status
```

## Git push command

Run the below command to push your branch to the remote repository

```bash
git push origin <branch_name>
Ex: git push origin development
```

## Fixing git conflicts:

### Check logs

If you see there are pull/push/merge conflicts and want to revert to previous commits, use the command `git log` to see log history and get the commit id from it and afterward reset it using

```bash
git reset <commit_id>
```

It will update your repo with the code to the version when commit\_id was committed.

## Merging branches

If you want to merge code from another branch to your branch, you can use the following commands

```bash
git checkout <base_branch>
git merge <branch_to_merge>
```

Above command will merge the code from `base_branch` to `branch_to_merge` .

## Stashing/Drafting your changes

Use the following command to stash/draft your changes in the local repo.

```bash
git stash
```

Use the following command if you don’t want to keep stashed changes and you want to delete them:

```bash
git stash drop
```

If you’ve modified any local file, then added that file to gitignore, still you’ll see that file will be present in the index (when running the command: `git status`). You can clear your screen using the below command

```bash
git update-index --assume-unchanged <file_name>
```

I’ll keep extending this list based on your suggestions and my experiences.
