Git & GitHub Roadmap
From Basics to Professional
Company-Level Workflows
Level 1: Basics (Absolute Beginner)
• ✔ Install Git: Windows (installer), macOS (brew), Linux (apt/yum)
• ✔ Check version: git --version
• ✔ Setup identity: git config --global [Link] 'Name'
• ✔ git config --global [Link] 'you@[Link]'
• ✔ Initialize repository: git init
• ✔ Stage files: git add <file>, git add .
• ✔ Commit changes: git commit -m 'message'
• ✔ View history: git log, git log --oneline
• ✔ Check status: git status
Level 2: Beginner (Local Workflow)
• 🔹 View changes: git diff (unstaged), git diff --staged
• 🔹 Undo changes: git checkout -- filename
• 🔹 Unstage file: git reset HEAD filename
• 🔹 Remove file: git rm filename
• 🔹 Rename/move file: git mv old new
• 🔹 Branching: git branch, git checkout branch
• 🔹 Create + switch branch: git checkout -b new-branch
Level 3: Intermediate
(Collaboration & Remote)
• 🌍 Add remote: git remote add origin <url>
• 🌍 View remotes: git remote -v
• 🌍 Push first time: git push -u origin main
• 🌍 Push updates: git push
• 🌍 Pull updates: git pull origin main
• 🌍 Clone repo: git clone <url>
• 🌍 Merge branches: git merge branchname
• 🌍 Resolve conflicts: fix → git add → git commit
Level 4: Advanced (Company
Practices)
• ⚡ Save unfinished work: git stash, git stash list, git stash pop
• ⚡ Rebase: git rebase main (cleaner history)
• ⚡ Revert commit: git revert <commit-id>
• ⚡ Reset commit: git reset --hard <commit-id>
• ⚡ Tags for release: git tag v1.0.0, git push origin v1.0.0
• ⚡ Cherry-pick: git cherry-pick <commit-id>
Level 5: Professional (Company
Workflows)
• 🏢 Branching strategy:
• - main → production
• - develop → integration
• - feature/* → new features
• - hotfix/* → urgent fixes
• 🏢 Forking workflow: fork → clone → branch → push → PR
• 🏢 Fetch vs Pull: git fetch (download only), git pull (download + merge)
• 🏢 Tracking branches: git branch -vv
• 🏢 Cleanup: git branch -d old, git push origin --delete old
Extra Commands & Tips
• 🔎 Show commit details: git show <commit-id>
• 🔎 Short status: git status -s
• 🔎 Who changed what: git blame filename
• 🔎 List aliases: git config --get-regexp alias
• 🔎 Create alias: git config --global [Link] status
Practice Exercise (Company Style)
• ✅ Create repo locally (git init)
• ✅ Add [Link] → git add . → git commit
• ✅ Push to GitHub (git remote add origin + git push)
• ✅ Create feature branch → commit changes
• ✅ Push branch → open PR on GitHub
• ✅ Merge PR into main
• ✅ Try rebase, stash, revert, cherry-pick