set up Github
- edit 
.gitconfig:[user] email = myemail name = myname [credential "https://github.com"] username = myusername helper = store - edit 
.git-credentials:https://<YOU>:<TOKEN>@github.combasic steps
git clone gitrepo git status git add . #add all git add hello/* #Git add to subdirectory git commit -m "commit message" git pull origin master git push origin masterset remote branches
After fork a repository, we can set the push url, so we can push to our repo and pull from the orginal repo.
check the remote branches:git remote -v
set the push url:git remote set-url --push origin mmyrepo
Check set correctly:git remote -v 
rebase
Before submit PR, it’s always good to rebase and squash all the commits into one commit, so it’s more convenient to be reviewed.git rebase -i HEAD~8 #combine the last 8 commits as one commit
use editor, like vim to edit:
  :i -> edit the rebase, pick the first one, and s the left
  :wq -> save and exit
keep those commits message to rebase, and others to squash or s
If we didn’t get into the commit message automatically, we can continue:git rebase --continue
  :i -> edit the whole commit mesage
  :wq -> save and exit
Keep those required message.
If we want to abort:git rebase --abort
Discard all local changes
Discard all local changes, but save them for possible re-use later: git stash
Discarding local changes (permanently) to a file:git checkout -- <file>
Discard all local changes to all files permanently:git reset --hard
Sync forked repo to update
If forked repo is behind the orginal repo, we need to sync:
git remote add upstream https://github.com/upstream/repo.git
git pull --rebase upstream master
git push --force-with-lease origin masteramend commits
If we need to amend our commits:git commit --amend
Update more later.