Skip to content
This repository has been archived by the owner on Mar 31, 2022. It is now read-only.

New Course: Git & GitHub for beginners #36

Open
HarshCasper opened this issue Jan 18, 2022 · 4 comments
Open

New Course: Git & GitHub for beginners #36

HarshCasper opened this issue Jan 18, 2022 · 4 comments

Comments

@HarshCasper
Copy link
Contributor

HarshCasper commented Jan 18, 2022

About the course

Title

Git & GitHub for beginners

Subtitle

Get started with learning how to version control and collaborate on your projects with Git & GitHub.

Description

As a developer, writer, or creator, you all deal with files every day. At some point, you are dealing with making new files or changing the old files and then saving it all over again. But how do you track the file changes that are being made over time? It was this simple question that prompted the development of version control systems.

Linus Torvalds, the creator of the Linux kernel, was prompted to develop a distributed version control system when the license for BitKeeper, an existing version control system, was revoked, which is today known as Git. Today, Git is universally used worldwide for version controlling the files and is now integrated into various popular services to manage applications and data.

However, the technical jargon around Git is quite challenging to understand. You might know how to make a commit to save your changes, but how do you squash your commits? How do you resolve a merge conflict and collaborate with other developers?

These are some of the questions that leave developers prowling across Stack Overflow threads looking for answers. This course aims to get you started with Git from a completely non-technical perspective and help you upskill yourself in Git with real-world examples.

You don’t need to prowl for commands any longer, and you will understand how you can develop mental models around Git and its practical usage. With interactive lessons, real-world analogies, and scenario-based exercises, you will learn how to use Git with GitHub, a Git hosting service, while employing a host of services.

Course outcomes

  • You will be able to understand various Git commands and develop a mental model around them.
  • You will understand how to collaborate on GitHub and work with a team using various features.
  • You will understand the need for Git and what role does version control plays, by deploying your own code.
  • You will follow straight objectives while dealing with debugging Git-based issues and understanding the structure.

Course Outline

1. Chapter 1: Version Control System & Git

Objective: Develop an understanding of version control systems and Git.

  • Why a version control system?
  • What is Git?
  • Understanding Git workflow.
  • Understanding Git objects and file system
  • Installing and configuring Git.
  • Git vs GitHub: What’s the difference?

Task: Develop an understanding of why teams use Git and what are difficulties they would face if no version control system is used.

2. Chapter 2: Getting started with Git

Objective: Version-controlling your project using Git!

  • What is a Git repository?
  • Creating a repository on GitHub and cloning it.
  • Adding and committing changes in a Git repository.
  • Best practises for using git
  • Pushing your commits to GitHub.
  • Time travelling with Git.

Task: Make a static website using HTML, CSS, JavaScript while making proper commits for your changes. Push the website to a GitHub repository and deploy on GitHub pages.

3. Chapter 3: Git & GitHub

Objective: Learn to collaborate using Git and GitHub!

  • Managing collaborators on your repository using GitHub.
  • Pulling changes to your repository.
  • Understanding merging in Git.
  • Resolving merge conflicts in Git.
  • Parallel development with Git branches.
  • Doing code reviews with pull requests.

Task: Quiz

4. Chapter 4: Contributing using Git & GitHub

Objective: Understanding the GitHub Flow of contribution

  • Contributing through the fork-clone workflow.
  • Managing remote repositories using Git.
  • Keeping your fork up to date.
  • Replaying changes in Git using rebase.
  • Saving changes without committing in Git.

Task: Fork a repository and make a pull request to the student repository of this class. Resolve the suggestions made by a review bot and squash commits at the end. Send a PR after it has been merged.

5. Chapter 5: Open-Source

Objective: Contributing to Open-source projects

  • What is open-source software?
  • Leveraging documentation to set up projects.
  • Finding good first issues to work on.
  • Fixing issues using pull requests.
  • Validating changes using automated tests.
  • Following good open-source etiquettes.

Task: Find an issue on any significant open-source project and propose an interest to work on it. Follow a fork-clone workflow in line with the project’s contributing guide and raise a pull request. Make sure all automated checks pass and is reviewed by a maintainer for correctness.

@anandology
Copy link
Contributor

Thanks for submitting a new course @HarshCasper. Here are a couple of suggestions:

  • We need a title and description for each chapter. The objective that you have can become the description. You can try adding a short title for each chapter instead of just calling it "Chapter 1" etc.

  • The current course framework doesn't have a place for a task. I suggest you to leave them in this issue and we'll figure out how to add the tasks once you make some progress with the course.

Please send a PR with a course.yml file. You can look at existing course.yml files in the repo for reference.

@aryasoni98
Copy link

I would like to work on this PR.

@anandology
Copy link
Contributor

@aryasoni98 thanks for your interest. @HarshCasper is already working on this course. You are welcome to review it and provide feedback.

@anandology
Copy link
Contributor

@de-sh @nikochiko could you please review this course proposal?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants