Git documentation - Jibus22/webserv GitHub Wiki
https://git-scm.com/docs 
https://www.miximum.fr/blog/enfin-comprendre-git/ 
https://blog.lesieur.name/comprendre-et-utiliser-git-avec-vos-projets/
https://github.blog/2015-06-08-how-to-undo-almost-anything-with-git/ 
https://cheatography.com/samcollett/cheat-sheets/git/ 
https://rogerdudler.github.io/git-guide/ 
https://training.github.com/downloads/github-git-cheat-sheet.pdf
https://zepel.io/blog/5-git-workflows-to-improve-development/ 
http://www.goring.org/resources/project-management.html 
https://www.robinwieruch.de/git-team-workflow 
🔽 below: naming conventions 
https://opensource.com/article/19/2/emoji-log-git-commit-messages 
https://dev.to/couchcamote/git-branching-name-convention-cch 
https://codingsight.com/git-branching-naming-convention-best-practices/
<type>(<scope>): <subject> 
✨feat: A new feature 
🐛fix: A bug fix 
📝docs: Documentation related changes 
♻️refactor: A code that neither fix bug nor adds a feature. (eg: You can use this when there is semantic changes like renaming a variable/ function name) 
⚡️perf: A code that improves performance 
🎨style: A code that is related to styling 
✅test: Adding new test or making changes to existing test 
👓chore: A code change that external user won't see (eg: change to .gitignore file or .prettierrc file) 
.
[working_dir]------(git add)------>[index(stage)]---------(git commit)--------->[head]
[working_dir]<-----(git reset)------[index(stage)]<--(git reset --soft HEAD~1)---[head]
- never git checkout <any_branch>with uncommited files in your actual branch
- never directly work on developbranch
- never git pullwith uncommited files in your actual branch
$ git remote -v    # tracked repositories
$ git branch -va   # Local & remote branches
$ git log          # commits History
$ git reflog       # HEAD History
$ git diff         # [staged]/[head (commited)] files differences
$ git status       # [unstaged]/[staged] files$ git branch <branch_name>    # create new branch called <branch_name>
$ git checkout <branch_name>  # jump to <branch_name>
$ git branch -d <branch_name> # delete <branch_name>
$ git add *                   # add files to index area (see diagram)
$ git commit -m "message"     # add indexed files to head area (see diagram)
(feature)$ git merge develop  # merge develop branch into your actual feature branch (may have conflicts to resolve)$ git push <upstream> <branch> # push <branch> to your remote server <upstream>. ex: 'git push origin feature'
$ git pull <upstream>          # repatriate and integrate <upstream> data in your current branch. ex: 'git pull origin'
$ git remote prune origin      # deletes stale references associated with origin. With --dry-run option, report what branches would be pruned, but do not actually prune them.$ git clean -i             # remove untracked files with interactive mode
$ git checkout -- <file>   # restore <file> to last index or head state (works only with tracked file)$ git reset                # moves back files from index area to working directory area (undo git add)
$ git reset <file>         # same as above, but only with <file>$ git reset --soft HEAD~1  # cancel & delete your last commit, going back to HEAD~1 state with your index area as before this last commit
$ git reset --hard HEAD~1  # cancel & delete your last commit & last index area, going back to HEAD~1 state.
$ git revert HEAD          # creates a new commit based on HEAD~1
$ git merge --abort        # abort the current conflict resolution process, and try to reconstruct the pre-merge state (work both within local merge or within remote merge) Reminder
 Reminder