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 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 used this and then made a Git Video to fill in the gaps for the newbie coders. Together these were invaluable. We won the hackathon with our Imposter Syndrome App called RealUp 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 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
Add in any other large npm libraries, and any credential env files you do not wish on the team shared git repo.
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
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 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.
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.
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
git branch -va
git branch -d branch_name git branch -D branch_name
git push <remote_name> --delete <branch_name>
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