Mastering Git and GitHub: A Beginner’s Guide

Mastering Git and GitHub: A Beginner’s Guide

Navigating Git and GitHub with Confidence and Efficiency

Overview

When five or more developers collaborate on a project, you may wonder how they efficiently interact, maintain versions, and track changes. Whether you are a beginner or have some experience with version control systems, learning Git and GitHub will help you increase your productivity and optimize your workflow. In this beginner's guide, we will cover the fundamentals of Git and GitHub and practical tips to help you become skilled in using these powerful tools.

What Exactly are Git and GitHub?

Linus Torvalds created Git in 2005 as open-source software for recording and tracking changes in a distributed version control system.

Git is a type of software called a version control system. A version control system saves and monitors file changes in a repository database. This means that it will detect code changes and allow developers to keep several versions of their files at various times. This is highly advantageous to developers for a multitude of reasons.

If developers do not use a version control system, they must keep multiple copies of their whole project in various files at all times. This is a slow experience that does not scale well, especially when numerous developers are required to collaborate on a project.

The repository database stores your code and makes it easier and faster to manage each version of your project. In this scenario, GitHub is used.

GitHub is a "hub," or place, where you may store your remote repository. When you use GitHub, you are communicating with Git under the hood. Microsoft owns it and makes it freely available.

Varieties of Version Control Systems

Two categories of version control systems exist:

  1. Centralized version control system

  2. Distributed Version control system

Centralized Version Control System

In a centralized system, all team members connect to a central server to obtain the most recent version of the code and to share changes with others. The issue with the centralized design is that if the server goes down, you cannot collaborate or share a snapshot of your code or project with others, which means you must wait until the server is back up before continuing work.

Centralized version control systems include Subversion and Team Foundation Server.

Distributed Version Control System

Every team member has a copy of the project with its history on their machine in distributed systems. As a result, you can store a snapshot of the project on your machine. If the server fails. You may simply synchronize your work with the work of others. This makes it superior to centralized systems.

Git and Mercurial are examples of distributed version control systems. Out of these, Git emerges as the most widely adopted choice.

Why make Git your ideal choice?

  • It is cost-free and open-source

  • It is super fast and scalable

Key Concepts of Git

Before getting into Git, it is essential to understand the following basic concepts:

  • A repository, sometimes known as a "repo," is a collection of files and their whole history of changes. It is the central component of version control, containing all project-related data.

  • Commit: A commit is a snapshot of the repository's modifications. Each commit identifies itself with a unique identifier and provides information about the changes made, such as additions, deletions, or changes.

  • A branch is like a separate path of development in a repository. It lets developers work on new things or fixes without affecting the main code. When the changes are tested and approved, these branches can be merged back into the main branch.

  • Merge: The process of combining changes from one branch into another is known as merging. It merges the modifications made in the source branch with those made in the target branch.

  • A pull request is a request to combine changes from one branch into another in open-source or collaborative projects. Before merging, team members can evaluate code, discuss changes, and check the quality of suggested changes.

Getting Started with Git

Git Installation

To begin using Git, you must first install it on your computer. Git is compatible with Windows, macOS, and Linux. You can download the installer provided on the official Git website (https://git-scm.com/downloads) and follow the installation instructions based on your operating system.

Git Configuration

Once Git is installed, you’ll have to configure it by adding your name and email address. That information is used to identify your commits. Open a terminal or command line and enter the following commands; replace the placeholders with your actual name and email details:

Creating a New Repository

To initiate the use of Git for version control, you have two choices: either establish a new repository or clone an existing one on GitHub. Let's begin by generating a new repository:

  • Create a new directory for your project on your computer.

  • Employ the terminal or command prompt and navigate to the directory.

  • Execute the following command to establish a fresh Git repository in the directory:

Git Basics

Checking Repository Status

Upon creating a new repository or cloning an already existing one, you can use the following command to confirm its current status:

This command displays the current branch, modified files, untracked files, and other pertinent data.

Staging and Committing Status

Stage the changes you wish to include in the commit before creating it. You can use staging to control which modifications are included in the commit. Use the following command to stage changes:

To stage all changes, use:

Once your changes are staged, you can create a commit:

The commit message should be descriptive and briefly explain the changes made in the commit.

Viewing commit History

Use the following command to view your repository's commit history:

This will return a list of all commits, complete with unique identities, authors, timestamps, and commit messages.

Creating and Switching Branches

To create a new branch, use the following command:

To list newly created branches,

To switch to a new branch, use:

A more convenient way to create and switch to a new branch is:

Merging Branches

Switch to the target branch and run the following command to merge changes from one branch into another:

Git will attempt to merge the changes automatically. If there are any conflicts, you must resolve them manually.

Working with Remotes

Remotes are versions of your repository that are hosted on third-party servers such as GitHub, GitLab, or Bitbucket. You can use the following command to connect your local repository to a remote repository:

Replace the remote URL with the URL of your remote repository.

Pushing and Pulling Changes

Use the following command to send your local commits to the remote repository:

Subsequently, after the first push, use this command:

Use the following commands to retrieve and incorporate changes from a remote repository:

You can suggest changes to the main repository of an open-source project hosted on GitHub by creating a pull request. After pushing your branch to the remote repository, navigate to your branch on GitHub and select the "New Pull Request" option.

Within the pull request, describe the changes you made and why they are advantageous. Other contributors will review your code, and once accepted, your changes will be merged into the main branch.

Conclusion

Congratulations on gaining a basic understanding of Git and GitHub. With confidence in version control, repository management, and collaboration, you can work on software projects and contribute to open-source communities. Continuous learning and practice are crucial for becoming a Git expert.

Happy coding and collaborating!