GitHub — Full Course Syllabus
Practical, step-by-step skills to finish guided mini-projects locally and publish them cleanly to a GitHub repository.
- 1. Cloning a repository with git cloneHow to create a local copy of a remote repository using git clone with HTTPS and SSH URLs.
- 2. Project READMECreating and updating a README.md that documents project purpose, setup steps, and usage instructions.
- 3. .gitignoreAdding and customizing a .gitignore file to exclude build artifacts, secrets, and local config files from commits.
- 4. Branching (git branch)Creating and listing branches locally to isolate feature or fix work from main development.
- 5. Switching branches (git switch / git checkout)Changing the working branch using git switch or git checkout and understanding detached HEAD states.
- 6. Staging changes with git addSelecting files and hunks to include in the next commit by using git add with paths and options.
- 7. Committing changes with git commitCreating commits with meaningful messages and using flags like -m and --amend responsibly.
- 8. Viewing commit history with git logInspecting commit history with git log and useful formatting options to track changes.
- 9. Pushing to remote (git push)Uploading local branch commits to the remote repository and setting upstream branches when needed.
- 10. Creating a pull request (PR) on GitHubOpening a pull request from a feature branch to main using the GitHub UI and writing a clear PR description.
- 11. Repository LICENSE fileSelecting and adding an appropriate open-source license file to declare reuse permissions for the project.
- 12. Commit message conventions (imperative tense, concise summary)Writing concise, descriptive commit messages and following a simple convention like imperative tense.
- 13. Including project assets (images, data)Adding and referencing project assets in the repo while avoiding committing large binary files directly.
- 14. Using GitHub Issues to track tasksCreating and linking GitHub Issues for tasks or bugs and referencing them from commits and PRs.
- 15. CONTRIBUTING.md for open-source projectsProviding contribution guidelines and local setup steps in CONTRIBUTING.md to help others contribute.
- 16. Forking a repositoryCreating a personal fork of a repository on GitHub to propose changes when you don't have write access.
- 17. Basic repository CI status checks for pull requestsUnderstanding status checks from CI (pass/fail) on PRs and how they affect merges (no CI pipeline creation required).
- 18. Fetching vs Pulling (git fetch / git pull)Synchronizing local branches with remote changes using git fetch and git pull and deciding when to merge or rebase.
- 19. Merging pull requests (squash, merge, rebase)Merging PRs via squash, merge, or rebase strategies in GitHub and when to choose each option.
- 20. Resolving merge conflictsIdentifying and resolving merge conflicts locally and completing the merge with proper commits.
- 21. Tagging releases (git tag)Creating annotated and lightweight tags for release snapshots and pushing tags to the remote.
- 22. Syncing a fork with upstreamKeeping a fork up to date by fetching from upstream and merging or rebasing changes into your forked main branch.
- 23. Adding a remote (git remote add)Configuring additional remotes (e.g., upstream) to push/fetch from multiple repositories.
- 24. Secrets and credentials handling in Git workflowsAvoiding committing secrets by using environment variables, .gitignore, and GitHub Secrets for actions.
- 25. Deploy static site to GitHub PagesDeploying static project output to GitHub Pages via branch or gh-pages and configuring the site.
- 26. Publishing a GitHub Release with release notes and artifactsCreating a GitHub Release with attached artifacts and release notes to mark project milestones.
- 27. Issue and Pull Request TemplatesAdding ISSUE_TEMPLATE and PULL_REQUEST_TEMPLATE to standardize contributions and PR descriptions.
- 28. Checking repository size and large-file strategiesInspecting repo size and adopting strategies like Git LFS or external hosting for large assets.
- 29. Tagging conventions (semantic versioning basics)Applying semantic versioning principles to tags (vMAJOR.MINOR.PATCH) when labeling releases.
- 30. Reverting and resetting commitsUndoing changes safely with git revert for public history and git reset for local history adjustments.
- 31. Interactive staging with git add -pSelecting hunks interactively to stage partial changes using git add -p or git add -i.
- 32. Squashing commits with interactive rebaseCombining multiple commits into one using interactive rebase to keep a clean feature history before pushing.