
Explore how git serves as a version control system that tracks changes through commits, enabling snapshots, history navigation, and line-by-line diffs.
Identify three essentials for this course: VSCode as the editor, access to the Readme in the GitHub repo, and a working git installation verified with git -v.
Adjust video quality by opening the settings and selecting 720p to counter auto resolution blurring. Understand that transcripts may not match the spoken content, and instructors cannot fix this.
Provide a brief course review to help improve future iterations of this practical Git and GitHub course, using one or two sentences.
Set your git identity by configuring a username and email to identify commits. Run git config --global user.name and git config --global user.email, then git config --global --list to verify.
Learn the basics of Git concepts such as commits, snapshots, and commit id, from init to log, plus untracked, staged, and tracked states.
Initialize a git repository for your new project, create and add files to the staging area, and commit with descriptive messages; review progress with git status and git log.
Modify content with Git by deleting a file, creating a folder, and staging changes. Commit with a descriptive message like 'shake and bake,' and view history with Git log.
Explore using the Visual Studio Code GUI to initialize repositories, stage changes, commit, and view logs, while understanding how GUI speeds production workflows compared to terminal commands.
Navigate git commit history using git log and checkout, learn about detached head and branching, and reset history with git reset --hard, using both terminal and gui workflows.
Explain the difference between git add and git add -A, show how to stage changes across folders, and warn against nesting git repositories to avoid project bugs.
Write clear, helpful commit messages for collaborative projects on Git and GitHub, avoiding secrets and ensuring messages are short, specific, and imperative mood; keep each commit focused on one thing.
practice git basics from git init to commits, using git status, git add, and git log, and organize changes with a notes/todo.txt workflow.
Create and switch branches such as feature and bugfix to isolate work, test changes, and merge back into main only when ready, using git branch, switch, and merge.
Merge branches in git using fast forward when there are no new commits, or a three way merge for divergent history; then merge main into feature and back to main.
Delete branches after merging using git branch -d for safe deletion, or git branch -D to force delete unmerged branches. Merge main into feature, test, then merge back to main.
Understand how git rebase rewrites history to a straight line by replaying commits, avoiding merge bubbles, and why rebasing public branches is discouraged in production.
Rebase example demonstrates replaying feature commits on top of main to achieve a linear history, compares with merge, and explains when to use rebase vs merge per policy.
Learn to manage git branches and workflows with the VSCode GUI, creating main, feature, bug fix, and payment branches, then merge and rebase for clean history.
Practice this optional project reinforces git fundamentals by initializing a repository, creating and merging feature and bug fix branches, rebasing, and deleting branches to solidify workflows.
Learn to use the local git config file for project-specific settings - default branch names, merge strategies, and custom aliases - and how the global config interacts with .gitignore exclusions.
Discover how git stash temporarily saves uncommitted changes, reverts to the last commit, and uses stash list, stash pop, and apply to manage saved work across branches.
learn to use git stash to switch branches, stash changes, and reapply with stash pop on return to the feature branch; beware tracked versus untracked changes when switching branches.
Explore how git head tracks your current position and how detached head occurs, then learn the git reflog command to view head changes, checkouts, merges, and recover commits.
Explore the git reset command to undo changes, unstage the changes, and reset to specific commits, with soft and hard modes, head references, and reflog for recovery.
Learn to undo staged and unstaged changes with git reset, git restore --staged, and git checkout, and clean up untracked files using git clean with a dry run and force.
Practice real-world git workflows by initializing a repo, configuring user data, making commits, using stash, exploring detached heads and branches, and mastering resets, reflog, and cleaning untracked files.
Explore Git merge conflicts, focusing on content conflicts, their causes when branches diverge, and a setup workflow with branches, commits, and preparing for merge and rebase.
Resolve git merge conflicts by merging main into payment and feature branches, using the merge editor to decide between current, incoming, or both changes.
Apply git rebase to replay feature and bug fix commits on top of main, compare current versus incoming changes, resolve conflicts, and learn how rebasing differs from merging.
Learn how to squash commits to keep a clean history, using git merge --squash and interactive rebase, resolve conflicts, and manage main, feature, and bug fix branches.
Learn to use git cherry-pick to apply a single commit from another branch without merging the whole branch, including choosing the right hash and handling remote scenarios.
practice a hands-on git workflow, including merging, rebasing, resolving merge conflicts, squashing commits, and cherry-picking to reinforce the section topics.
Learn how git and GitHub work together to store and backup your code online, push and pull changes, manage branches, and deploy to a hosting provider.
Learn to set up ssh keys for secure, password-free access to GitHub by generating a private–public key pair, storing the private key locally, and testing the connection.
Create your first GitHub repository by initializing a local project, committing changes, and linking to a remote origin via SSH. Push to main and leverage cloud hosting for collaboration.
Create and push a GitHub repository from VS Code. Connect it to Netlify to host a static site with an index.html and main.css, enabling continuous deployment from GitHub.
Learn to create a repository, push changes, and submit your first pull request on GitHub, including branch per ticket, code review, and squash-and-merge into main.
Practice a second pull request on the ticket two two branch: add files, update code, commit, and squash via rebase, then push and resolve conflicts on GitHub.
Learn how to align local and remote git branches with fetch and pull, rebasing and squashing commits, resolving conflicts, and safely force-pushing to review and merge pull requests on GitHub.
practice real-world git and github workflows by creating three local projects, initializing repos, adding app.js, committing, pushing, and using branch names like ticket one one.
Practice end-to-end git workflows by creating feature branches for tickets, updating app.js, committing changes, pulling, and merging via pull requests, including rebases and conflict resolution.
Discover why using the -u upstream flag and keeping the same local and remote branch names streamlines push and pull, demonstrated while creating and pushing a bug fix branch.
In practical git and GitHub workflows, learn how to use git fetch to update remotes and cherry-pick a specific commit from a teammate’s feature branch.
Course Description:
This hands-on course is your complete guide to mastering Git and GitHub, starting from absolute basics and progressing through real-world, production-level workflows. You'll not only learn how Git works—you'll use it in structured projects, exercises, and challenges that mimic how modern development teams operate.
Section 1: Git Fundamentals & Setup
You'll begin by understanding what Git is and why it's essential for version control. In this section, you'll:
Install and configure Git globally and locally.
Learn how Git tracks code history and changes.
Explore critical commands like git init, git status, git add, and git commit.
Understand the difference between tracked, untracked, staged, and modified files.
Build your first Git project from scratch using the command line and VSCode.
Section 2: Exploring Commits & History
Dig deeper into Git internals and learn how to:
View detailed commit logs using git log and git log --oneline.
Navigate between commits with git checkout <hash>.
Understand HEAD and the concept of a detached HEAD.
Safely recover lost commits using git reflog.
Section 3: Branching, Merging & Rebase Workflows
You'll learn how teams manage parallel workstreams with branches and bring everything back together:
Create, switch, and delete branches.
Perform Fast-Forward and Three-Way merges.
Use git rebase to create a clean, linear history.
Compare merge vs rebase visually using Git log and VSCode GUI.
Resolve merge conflicts manually and understand common scenarios.
Section 4: Advanced Git Techniques
Go beyond the basics and unlock Git’s full power:
Perform soft and hard resets (git reset --soft, --hard, --mixed).
Unstage and discard changes using git restore and git checkout.
Clean untracked files with git clean.
Use .gitignore to exclude sensitive and temporary files.
Stash in-progress work and safely apply it later (git stash).
Section 5: Commit Squashing & Cherry-Picking
Understand how to craft clean and focused commit histories:
Use git rebase -i to squash commits interactively.
Learn how to apply individual commits from other branches using git cherry-pick.
Practice real scenarios that simulate production cherry-picking across cloned repositories.
Section 6: Working with GitHub
Push your local skills into the cloud and collaborate like a pro:
Create a GitHub repo and connect via SSH.
Push and pull branches, configure remotes, and set up upstream tracking.
Learn the difference between git fetch and git pull.
Use GitHub UI and VSCode to publish branches and manage repos.
Section 7: Real-World GitHub Workflows
Work through end-to-end collaborative GitHub challenges:
Clone repositories and simulate multiple developer environments (dev1, dev2, dev3).
Create and merge branches using pull requests.
Perform merge and rebase-based strategies for integrating code.
Explore GitHub branching models and workflow decisions.
Practice Challenges Throughout
Each section includes exercises and challenges to reinforce concepts:
Build isolated Git projects for hands-on repetition.
Simulate team-based workflows using multiple local environments.
Apply real-world recovery tools like reflog, stash, and cherry-pick.