DEV Community

Cover image for Boost Your Coding Game with Git and GitHub Mastery
  Isaiah   Clifford Opoku
Isaiah Clifford Opoku

Posted on • Updated on

Boost Your Coding Game with Git and GitHub Mastery

Git and GitHub are essential tools for any software developer. Git is a version control system that allows you to track changes to your code, while GitHub is a hosting platform for Git repositories. By mastering Git and GitHub, you can:

  • Save time and frustration: Git can help you avoid losing work by tracking all of your changes. It can also help you revert to previous versions of your code if you make a mistake.
  • Collaborate more effectively: GitHub makes it easy to collaborate with other developers on projects. You can share your code, review each other's work, and track changes in real time.
  • Automate your workflow: Git can be used to automate many tasks, such as testing and deployment. This can free up your time so you can focus on more creative and strategic work.

This tutorial will teach you the basics of Git and GitHub, including:

  • How to create and manage repositories
  • How to track changes to your code
  • How to collaborate with others
  • How to automate your workflow
  • By the end of this tutorial, you will be well on your way to mastering Git and GitHub, and you will be able to boost your coding game.

Who is this guide for?

Who can benefit from this guide? Anyone looking to improve their Git and GitHub skills! Whether you're a beginner or an experienced developer, this guide will help you streamline your workflow and collaborate more efficiently.

If you're just starting out in tech, learning Git and GitHub can be a game-changer. Version control allows you to track changes to your code, collaborate with others, and experiment with new features without fear of breaking your entire codebase.

But even experienced developers can benefit from mastering Git and GitHub. Advanced features like branching and merging can save you time and headaches when it comes to managing complex projects. And by staying up to date with the latest tools and best practices, you'll be able to stay ahead of the curve in the fast-paced world of software development.

Assumptions

Git and GitHub Terms

Repository Structure and Terminology

  • Branch: A version of the codebase that is independent of other versions. Branches allow multiple developers to work on different features or bug fixes simultaneously without interfering with each other's work.

  • Commit: A unit of change that represents a specific set of changes to the codebase. Commits allow you to keep track of the history of your code and revert to previous versions if necessary.

  • Stage: The process of selecting which changes to include in the next commit. Files that have been staged are ready to be committed.

  • Merge:The process of combining two branches into one. Merging allows you to incorporate changes from one branch into another.

  • Pull Request: A request to merge a branch into another branch. Pull requests allow other developers to review and comment on your changes before they are merged into the main codebase.

  • Fork: A copy of a repository that allows you to experiment with changes without affecting the original repository.

  • Clone: A copy of a repository on your local machine. Cloning allows you to work on the codebase without being connected to the internet.

  • Remote: A copy of a repository on a remote server. Remotes allow you to collaborate with other developers and share your changes.

  • Origin: The default remote name given to a repository when it is cloned. The origin remote points to the repository that you cloned from.

  • Upstream: The original repository that was cloned. The upstream remote points to the repository that you cloned from.

  • Master: The default branch name given to a repository when it is created. The master branch typically represents the latest stable version of the codebase.

Git Commands and Actions

  • Working Directory : The directory that contains the files that you are working on.
  • Staging Area/Index: The directory that contains the files that are ready to be committed.
  • HEAD: The current branch that you are working on.

  • Checkout: The process of switching between branches.

  • Push: The process of sending your commits to a remote repository.

  • Pull: The process of fetching and merging changes on a remote repository to your local repository.

  • Fetch: The process of fetching changes on a remote repository to your local repository.

Dont be scared about this terminology by am going to give and examples on how to use them in real applications , let's start .

Before we start we need to know what is git and github and how to install them.

What is GitHub?

  • GitHub is a code hosting platform for version control and collaboration
  • It lets you and others work together on projects from anywhere
  • This tutorial teaches you GitHub essentials like repositories, branches, commits, and Pull Requests
  • You’ll create your own Hello World repository and learn GitHub’s Pull Request workflow, a popular way to create and review code
  • You’ll also learn about issues, GitHub’s powerful tracking tools for every bug and feature request that comes your way

What is GitHub used for?

  • GitHub is a code hosting platform for version control and collaboration
  • It lets you and others work together on projects from anywhere
  • You can use GitHub to store and share your code, track and assign issues, and manage pull requests
  • You can also use GitHub to create your own website using GitHub Pages
  • GitHub is a great way to collaborate with others on projects

What is Git?

  • Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency
  • Git is easy to learn and has a tiny footprint with lightning fast performance
  • It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows
  • Git was initially designed and developed by Linus Torvalds for Linux kernel development

  • Git is a version control system

  • Allows you to track changes to your code over time

  • Enables you to collaborate with others on the same codebase

  • You can easily revert to a previous version of your code or experiment with new features without affecting the main codebase

  • Provides a record of all changes made to your code, including who made them and when, which can be useful for auditing and debugging

How to install Git

let learn how to config git and github

How to configure Git

  • Set a name that is identifiable for credit when review version history
$  git config --global user.name "Your Name"

Enter fullscreen mode Exit fullscreen mode
  • Set an email address that will be associated with each history marker
$ git config --global user.email "

Enter fullscreen mode Exit fullscreen mode
  • Set automatic command line coloring for Git for easy reviewing

 $ git config --global color.ui auto`

Enter fullscreen mode Exit fullscreen mode
  • Set the default editor for Git
$  git config --global core.editor "code --wait"

Enter fullscreen mode Exit fullscreen mode
  • Set the default branch name to main
$ git config --global init.defaultBranch main

Enter fullscreen mode Exit fullscreen mode
  • Set a command to always show helpful hints


$ git config --global help.autocorrect 1

Enter fullscreen mode Exit fullscreen mode

Congregations you have successfully configured git and github .Now let div into git commands and how use it .

Git commands

  • Create a new local repository

 $  git init

Enter fullscreen mode Exit fullscreen mode
  • Create a new directory called my-project
$ git init my-project

Enter fullscreen mode Exit fullscreen mode
  • Show the status of the current branch
$ git status


Enter fullscreen mode Exit fullscreen mode
  • Clone a repository that already exists on GitHub to your local machine
 $ git clone


Enter fullscreen mode Exit fullscreen mode
  • Cloning into project-name...

$ git clone  project-name

Enter fullscreen mode Exit fullscreen mode
  • Add files to the staging area
$ git add

Enter fullscreen mode Exit fullscreen mode

when you add the dot, it adds all the files in the current directory


$ git add .


Enter fullscreen mode Exit fullscreen mode
  • when you add the file name, it adds the file with the name you specified

$ git add file-name

Enter fullscreen mode Exit fullscreen mode
  • Commit changes to head (but not yet to the remote repository)
$ git commit
Enter fullscreen mode Exit fullscreen mode
  • [master (root-commit) 1a2b3c4] Commit message
$ git commit -m "Commit message"


Enter fullscreen mode Exit fullscreen mode
  • Push changes to remote repository (eg. GitHub)
$  git push
Enter fullscreen mode Exit fullscreen mode
  • Pushing to github .com:username/project-name.git

$ git push origin master

Enter fullscreen mode Exit fullscreen mode
  • Fetch and merge changes on the remote server to your working directory
 $ git pull

Enter fullscreen mode Exit fullscreen mode
  • Fetch and merge changes on the remote server to your working directory
$ git pull origin master # Updating 1a2b3c4..3d4e5f6

Enter fullscreen mode Exit fullscreen mode
  • Fetch changes on the remote server to your working directory
$  git fetch


Enter fullscreen mode Exit fullscreen mode
  • Merge a branch into the branch you are currently on (eg. master)

$ git merge

Enter fullscreen mode Exit fullscreen mode
  • Merge into the branch named branch-name


$ git merge branch-name # Updating 1a2b3c4..3d4e5f6

Enter fullscreen mode Exit fullscreen mode
  • List Branches
$ git branch

Enter fullscreen mode Exit fullscreen mode
  • Create a new branch
$ git branch branch-name


Enter fullscreen mode Exit fullscreen mode
  • Delete the branch
$ git branch -d branch-name

Enter fullscreen mode Exit fullscreen mode
  • Switch branches or restore working tree files
$  git checkout

Enter fullscreen mode Exit fullscreen mode
  • Switch to the branch named branch-name

$ git checkout branch-name

Enter fullscreen mode Exit fullscreen mode
  • Create a new branch and switch to it


$ git checkout -b branch-name

Enter fullscreen mode Exit fullscreen mode
  • Delete the branch named branch-name

$ git branch -d branch-name

Enter fullscreen mode Exit fullscreen mode
  • List all currently configured remote repositories

$ git remote -v

Enter fullscreen mode Exit fullscreen mode
  • Show information about a remote repository


$ git remote show origin

Enter fullscreen mode Exit fullscreen mode
  • Add a new remote repository, named origin

$ git remote add origin

Enter fullscreen mode Exit fullscreen mode
  • Add a new remote repository, named origin, at the URL


$ git remote add origin URL

Enter fullscreen mode Exit fullscreen mode
  • Remove the remote repository named origin

$ git remote rm origin

Enter fullscreen mode Exit fullscreen mode
  • show all commits in the current branch’s history

$ git log

Enter fullscreen mode Exit fullscreen mode

so far we have learn how to use git and github .let div into how create from our local machine to github

How to create a repository

Before you can push your code to GitHub, you need to create a repository on GitHub. You can create a repository on GitHub by following these steps:

  • Go to GitHub
  • Click the + icon in the top right corner and select New repository

How to push your code to GitHub

After you have created a repository on GitHub, you can push your code to GitHub by following these steps:

clone the repository to your local machine


$ git clone URL

Enter fullscreen mode Exit fullscreen mode

you can aslo initialize a new repository


$ git init

Enter fullscreen mode Exit fullscreen mode
  • navigate to the directory of your project

$ cd project-name

Enter fullscreen mode Exit fullscreen mode
  • add all the files in the directory to the staging area

$ git add .

Enter fullscreen mode Exit fullscreen mode
  • commit the changes to the current branch


$ git commit -m "Commit message"

Enter fullscreen mode Exit fullscreen mode

How to push changes to a remote repository

  • Push changes to a remote repository
$ git push origin master

Enter fullscreen mode Exit fullscreen mode

You can only push to master or you can also create a new branch and push to it. you refer the previous section to know how to create a new branch and push to it

GitHub is a powerful code hosting platform that provides tools for version control and collaboration. Git, on the other hand, is a distributed version control system that helps developers track changes to their code over time and collaborate with others on the same codebase. In this tutorial, we covered the basics of how to install and configure Git, as well as some essential Git commands such as git init, git status, git add, git commit, git push, and git pull. We also discussed the benefits of using GitHub, including the ability to store and share code, track and assign issues, manage pull requests, and create websites using GitHub Pages. Overall, mastering Git and GitHub is an essential skill for any developer looking to work on software projects with others.

Top comments (2)

Collapse
 
haukeschlosser profile image
Hauke Schlosser

Thanks for this guide. I have experienced quite a view software developers with pretty mediocre git-skills. It is a shame, since basic knowledge and understanding of it really makes workflows way more productive.

The tools we use and how well we use them is as important as our coding skills.

Collapse
 
cliff123tech profile image
Isaiah Clifford Opoku

Thank you for your comment and I'm glad you found the guide helpful! I completely agree with you that having a basic understanding of Git and GitHub can greatly enhance a developer's productivity and workflow. In today's world, where collaboration and version control are essential, being proficient in these tools is just as important as having strong coding skills. It's important for developers to continuously improve their skills and knowledge in all aspects of their work, including the tools they use.