Git Cheat Sheet
Tags: gitcheatsheet, gitcommands, gitfork
Published: 2019-02-20 17:18:24

---
title: Git Cheat Sheet
published: true
description: GIT commands I share to team or refer to myself ongoing in my job.
tags: GIT cheat sheet, git commands, git fork
---

# Best commands and steps for Error Free Git in a team. 

I use this regularly in work.

I have seen projects fail when we do not have this in place and loose momentum, some of the team never get the hang of GIT because of the merge errors and issues that are easily avoidable. 

I have seen teams at my UNH bootcamp a few years ago loose confidence over git. 

At a recent [MomsCanCode](@MomsCanCodePgh) hackathon, where I shared this on day 1 of the week long project, we had seamless code sharing , and most of the team had never used git before. Our team leader [@kudacoder](@kudacoder) used this and then made a [Git Video](https://www.useloom.com/share/b4c036c2af1b47489667d26b14cba9ed) to fill in the gaps for the newbie coders. Together these were invaluable. We won the hackathon with our Imposter Syndrome App called [RealUp](https://realupapp.herokuapp.com) and I believe being able to share code easily was a key factor. 

This assumes you have git installed locally, and have created a [git repo](https://www.youtube.com/watch?v=LR5BYZjuXMU) or have a repo to clone from.

This is to hit the ground running for your first Team project, coming from coding and git commiting by yourself.

FYI - Forking is only necessary if you are not a collaborator.
After you have forked the repo (https://help.github.com/articles/fork-a-repo/) from the github Desktop GUI
```
git clone -v <GitForkedRepo> or <AnyRepoName>
```
From your project directory,
 
create a .gitignore file, with at least one line such as 
```
/node_modules 
/cypress
``` 

Add in any other large npm libraries,  and any credential env files you do not wish on the team shared git repo.


```
git status
```
will show you are on correct branch, which should be your branch.

Always pull down the most recent version of master before you start any changes with
```
git checkout master
```

```
git pull
```

Now you are on latest version but you can’t code in master so create or if already there switch to your branch

To switch from master to your branch (and create it, if it does not exist)

```
git checkout -b your-branch
```

or if does exist and you just need to switch to your branch….
```
git checkout your-branch
```

After making your code changes.

```
git add .
```

This adds all your changes
You can also ```
git add file.ext file2.ext
```
 to add specific files only (I recommend this almost 90% of the time to avoid accidentally adding massive libraries or to check you have only changed the files you meant to).

```
git commit -m “desc of changes to be specific as possible”
```

```
Git push origin <your branch> 
```
Never push to Master!!

Go to the GitHub repo in the browser now, to create a pull request.
Here you will auto have notification/check for conflicts. If no conflict merge to master and your done.
(The steps to create a pull request is…another document!).

After merging to master on the browser…

Go back to terminal of project folder.

```
git Status
```
```
git checkout master
``` 
This is really important - you must pull down latest master, to see your new changes that are newly merged in master and make sure you have a working app or you could have introduced bugs. Also if you don’t do this, you will be working on an older version than everyone else!
This will switch to masterbranch

BUT YOUR CODE in visual code HAS NOT SWITCHED YET!!!! This can be confusing and causes people to loose changes as they think they have latest master but they don’t.

```
git pull
``` 
to get what is in the master to show in visual code so you don’t end up commit older version of code

When you checkout master, you also have to pull (also FYI a pull is same as a git Fetch followed by git Merge).

This sounds complicated but believe me this works!! There are many more commands we may need to use, but this is the every day, team coding bible for me!

Following on from a git checkout master and git pull.
either create a new branch (as in step 4) or
```
git checkout <previously used branch>
```
```
git rebase master
```

Now for the final check: You need to re-test your app to make sure all looks good before starting any new dev work. So many times people don't, and the merge and the app fails for someone else on team.

## Other useful commands

To remove a file you have just added via git add .
```
git rm -f auth.json
```

(This only takes the file out of the staged for committing list!)


To checkout a team members remote branch:

```
git fetch origin
```
```
git branch -v -a
```
```
git checkout -b branchname origin/branchname
```

if you need to rollback a merge i.e. after a git rebase master in your local independent branch

```
git checkout master
``` 
```
git reset --merge
```
### To check all versions

```
git branch -va
```

### To delete the local GIT branch we can try one of the following commands:

```
git branch -d branch_name
git branch -D branch_name
```

### To delete a remote branch you can use the following command:

```
git push <remote_name> --delete <branch_name>
```

## To rebase your branch with the upstream/forked branch

first add the remote forked branch to your remote branches as an upstream.

```
git checkout <your-origin-branchname> (e.g. git checkout master)
```

Switched to branch 'your-origin-branch'
Your branch is up-to-date with 'origin/your-origin-branch'.


```
git remote add upstream <remote branch url> e.g. https://github.com/cypress-io/cypress.git

```
Adds the remote branch to your repo as upstream , check this:

```
git remote -v
```
You should see:

```
git remote -v
origin  https://github.com/louise-hayes/Project-3-Speech.git (fetch)
origin  https://github.com/louise-hayes/Project-3-Speech.git (push)
upstream        https://github.com/peraltot/Project-3-Speech.git (fetch)
upstream        https://github.com/peraltot/Project-3-Speech.git (push)

```


```
git pull upstream <your-origin-branch>
```
Updates your branch from upstream

check all branch #'s to ensure all on same git#!
 
```
git branch -av
``` 
You will see: that your master (6266a2b) == remote/origin/master(6266a2b).

```
git branch -av
* master                          6266a2b Update README.md
  remotes/origin/HEAD             -> origin/master
  remotes/origin/master           6266a2b Update README.md
  remotes/origin/textfile-working ead5671 added body-parser, jquery for  calls to fix /saved POST
  remotes/upstream/master         6266a2b Update README.md
```

To change a commit after the fact:

```
git commit --amend
```

To unstage a file from git add (reverse the git add)
run
 
```
git status
```
should tell you what to do if you want to unstage files

option 1: 

```
git rm /path/to/file
```

option 2: 

```
git reset HEAD /path/to/file
```