Skip to the content.
🚀 GitHub Learning Journey
- 📒 This project is my personal log of learning GitHub step by step.
- 🛠️ Focus is on GitHub CLI commands, not just the GUI.
- ⚡ CLI is faster, smoother, and practical for real-world workflows.
- ☁️ Most cloud servers only allow terminal access, so CLI skills are essential.
- 📚 The repo is structured day by day with one new topic/command each day.
- 🔗 Main README links to detailed files with examples, explanations, and variations.
📅 Learning Roadmap
1. Setting Up and Creating Your First Repo
**Goal:** Get started with GitHub CLI and make your first commit.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Install and authenticate GitHub CLI | [View Details](/github-learning/days/day-01.html) |
| 2 | Create a new repository using CLI | [View Details](/github-learning/days/day-02.html) |
| 3 | Clone the repository locally | [View Details](/github-learning/days/day-03.html) |
| 4 | Add a file and commit changes | [View Details](days/day-04.md) |
| 5 | Push your first commit to GitHub | [View Details](days/day-05.md) |
2. Keeping Your Local Repo Updated
**Goal:** Sync your local repository with the latest changes from remote.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Fetch and pull the latest commits | [View Details](days/day-06.md) |
| 2 | Resolve simple merge updates | [View Details](days/day-07.md) |
| 3 | Verify your branch is up to date | [View Details](days/day-08.md) |
| 4 | Understand fast-forward vs merge pulls | [View Details](days/day-09.md) |
3. Forking and Working on Someone Else’s Repo
**Goal:** Contribute to open source or a team repo.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Fork a public repository using GitHub CLI | [View Details](days/day-10.md) |
| 2 | Clone your fork locally | [View Details](days/day-11.md) |
| 3 | Create a new branch for your feature or fix | [View Details](days/day-12.md) |
| 4 | Make changes and commit | [View Details](days/day-13.md) |
| 5 | Push your branch to your fork | [View Details](days/day-14.md) |
| 6 | Create a Pull Request (PR) using GitHub CLI | [View Details](days/day-15.md) |
4. Managing Branches in Your Own Repo
**Goal:** Work on multiple features independently.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Create a new branch | [View Details](days/day-16.md) |
| 2 | Switch between branches | [View Details](days/day-17.md) |
| 3 | Merge branches into main | [View Details](days/day-18.md) |
| 4 | Delete old branches | [View Details](days/day-19.md) |
| 5 | Handle a simple merge conflict | [View Details](days/day-20.md) |
| 6 | View branch history and graph | [View Details](days/day-21.md) |
5. Collaborating with Team Members
**Goal:** Learn real collaboration workflows.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Add a collaborator to your repo | [View Details](days/day-22.md) |
| 2 | Review a teammate’s Pull Request | [View Details](days/day-23.md) |
| 3 | Comment and approve using CLI | [View Details](days/day-24.md) |
| 4 | Merge PR into main | [View Details](days/day-25.md) |
| 5 | Handle conflicts during merging | [View Details](days/day-26.md) |
| 6 | Sync your fork with upstream repository | [View Details](days/day-27.md) |
6. Managing Issues and Feature Requests
**Goal:** Track bugs and feature requests efficiently.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Create an issue from GitHub CLI | [View Details](days/day-28.md) |
| 2 | Assign issue to yourself or teammate | [View Details](days/day-29.md) |
| 3 | Link issue to a branch or PR | [View Details](days/day-30.md) |
| 4 | Close issue automatically with commit message | [View Details](days/day-31.md) |
| 5 | Use labels and milestones | [View Details](days/day-32.md) |
7. Version Control and Rollbacks
**Goal:** Control your project’s history.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | View commit history and diffs | [View Details](days/day-33.md) |
| 2 | Undo last commit (soft and hard resets) | [View Details](days/day-34.md) |
| 3 | Revert a mistaken commit | [View Details](days/day-35.md) |
| 4 | Stash temporary changes | [View Details](days/day-36.md) |
| 5 | Tag important versions (v1.0, v1.1, etc.) | [View Details](days/day-37.md) |
8. Automating with GitHub Actions
**Goal:** Automate repetitive tasks (CI/CD).
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Create your first workflow file (YAML) | [View Details](days/day-38.md) |
| 2 | Run actions on every push | [View Details](days/day-39.md) |
| 3 | Add build/test automation | [View Details](days/day-40.md) |
| 4 | Set up secrets for workflows | [View Details](days/day-41.md) |
| 5 | Debug failed workflow runs | [View Details](days/day-42.md) |
9. Managing Releases
**Goal:** Package and release your software.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Create a release with GitHub CLI | [View Details](days/day-43.md) |
| 2 | Upload assets to release | [View Details](days/day-44.md) |
| 3 | Automate release notes | [View Details](days/day-45.md) |
| 4 | Tag the release version | [View Details](days/day-46.md) |
| 5 | View release history | [View Details](days/day-47.md) |
10. Authentication and Permissions
**Goal:** Secure your workflow.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Use SSH key authentication | [View Details](days/day-48.md) |
| 2 | Generate a Personal Access Token | [View Details](days/day-49.md) |
| 3 | Configure credential storage | [View Details](days/day-50.md) |
| 4 | Fix “permission denied” errors | [View Details](days/day-51.md) |
| 5 | Manage team permissions on GitHub | [View Details](days/day-52.md) |
11. Troubleshooting Common Issues
**Goal:** Recover quickly when things go wrong.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Fix merge conflicts manually | [View Details](days/day-53.md) |
| 2 | Restore deleted files or branches | [View Details](days/day-54.md) |
| 3 | Handle “detached HEAD” | [View Details](days/day-55.md) |
| 4 | Reconnect or change remote URLs | [View Details](days/day-56.md) |
| 5 | Clean untracked files safely | [View Details](days/day-57.md) |
12. Real-World DevOps and Automation Tasks
**Goal:** Move from learning to applying in production-like use cases.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Auto-deploy a static site via GitHub Actions | [View Details](days/day-58.md) |
| 2 | Backup your repo automatically using Actions | [View Details](days/day-59.md) |
| 3 | Use GitHub CLI with Docker containers | [View Details](days/day-60.md) |
| 4 | Manage multiple projects and forks efficiently | [View Details](days/day-61.md) |
| 5 | Integrate GitHub with CI/CD or monitoring tools | [View Details](days/day-62.md) |
13. Advanced Practical Challenges
**Goal:** Level up your command fluency and workflow optimization.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Create a feature branch workflow for a team | [View Details](days/day-63.md) |
| 2 | Squash commits before merging | [View Details](days/day-64.md) |
| 3 | Rebase your feature branch | [View Details](days/day-65.md) |
| 4 | Create and manage submodules | [View Details](days/day-66.md) |
| 5 | Automate issue creation using CLI scripts | [View Details](days/day-67.md) |
14. Project and Documentation Management
**Goal:** Make your repo more professional.
| Task No. | Description | Link |
|-----------|-------------|------|
| 1 | Add README, LICENSE, and CONTRIBUTING files | [View Details](days/day-68.md) |
| 2 | Create templates for issues and PRs | [View Details](days/day-69.md) |
| 3 | Organize project board (Kanban style) | [View Details](days/day-70.md) |
| 4 | Add discussions section | [View Details](days/day-71.md) |
| 5 | Automate project updates using Actions | [View Details](days/day-72.md) |
🎯 Goals of This Project
- Build a solid foundation in GitHub CLI.
- Document learning in a way that’s easy to follow for others.
- Create a ready reference for real-world development & deployment.
✅ Why Use CLI Instead of GUI?
- Faster workflow 🚀
- Works in cloud/remote servers (no GUI available)
- Easier for automation and scripting
- Improves adaptability for DevOps and deployment