Table of contents
GitHub is a web-based version-control and collaboration platform for software developers. At a high level, GitHub is a website and cloud-based service that helps developers store and manage their code, as well as track and control changes to their code. To understand exactly what GitHub is, you need to know two connected principles:
Version control
Git
To see what is git you can check my other blog about Git. According to statics collected in October 2020, it is the most prominent source code host, with over 60 million new repositories created in 2020 and boasting over 56 million total developers. At the heart of GitHub is Git, an open source project started by Linux creator Linus Torvalds. Matthew McCullough, a trainer at GitHub, explains that Git, like other version control systems, manages and stores revisions of projects. Although it’s mostly used for code, McCullough says Git could be used to manage any other type of file, such as Word documents or Final Cut projects. Think of it as a filing system for every draft of a document. Once new additions to a program are complete, for example, they can easily be incorporated into existing programs.
GitHub also makes it extremely simple to work together on strings of code to really dial in and perfect even the smallest parts of a program. With GitHub, you can collaborate and work on projects with others anywhere in the world. Some of Git’s predecessors, such as CVS and Subversion, have a central “repository” of all the files associated with a project. McCullough explains that when a developer makes changes, those changes are made directly to the central repository. With distributed version control systems like Git, if you want to make a change to a project you copy the whole repository to your own system. You make your changes on your local copy, then you “check in” the changes to the central server. McCullough says this encourages the sharing of more granular changes since you don’t have to connect to the server every time you make a change.
GitHub is a Git repository hosting service, but it adds many of its own features. While Git is a command line tool, GitHub provides a Web-based graphical interface. It also provides access control and several collaboration features, such as a wikis and basic task management tools for every project.
The flagship functionality of GitHub is “forking” – copying a repository from one user’s account to another. This enables you to take a project that you don’t have write access to and modify it under your own account. If you make changes you’d like to share, you can send a notification called a “pull request” to the original owner. That user can then, with a click of a button, merge the changes found in your repo with the original repo.
Is Github Free? How Much It Costs?
With GitHub Free for personal accounts, you may collaborate with an infinite number of people on an unlimited number of public repositories with a full feature set and an unlimited number of private repositories with a limited feature set. The Team plan on Github starts at $44 per user per year.
Who Uses Github?
Github is used by developers, programming instructors, businesses, students, and enterprises worldwide to create millions of open source projects and enable organized collaboration in one platform. It is a collaborative web-based platform with version control systems that offers a more efficient way to build excellent software.
Github Features
The best feature of Github is that it allows developers from all around the world to collaborate. Open-source solutions, such as GitHub, allow potential developers to participate and share their knowledge for the benefit of the worldwide community.
You can use GitHub to host simple websites for free instead of paying for web hosting elsewhere. This saves you money and gives you more control over your website. However, that isn't the only thing that its code hosting is good for.
GitHub allows you to post code for use or for consideration by other GitHub users. This can be used for remote collaboration with people that you know, or to source inspiration and expertise from users you haven't met. You can also maintain different versions of a piece of code for ongoing testing and development.
Users on GitHub don't only interact through one another's code. There is also an aspect of the platform similar to social media sites. If you select a few interests, GitHub recommends posts by other community members. You can also follow other members and browse "trending repositories."
As of this writing, GitHub has over 55 million users regularly interacting with the platform. In addition to their question-and-answer forum, GitHub is also currently running a beta of a "Discussions" tool that will make the site even more social and collaborative. If the idea of collaborating on code sounds good but the idea of having your code available to everyone doesn't, there is a middle ground. Forming an "Organization" on GitHub lets you share repositories with other users and manage their access on a case-by-case basis. In this way, having an organization on GitHub is similar to having a shared Google Drive. You can also create "Teams" within GitHub organizations. This allows you to set tasks and reminders similar to dedicated workflow platforms.
GitHub is more about giving a helping hand than serving as a crowdfunding site. However, you can help fund other projects and try to get your own projects funded through the GitHub Sponsors program.
GitHub encourages users to sponsor open source projects that they use, often without realizing it, and to sponsor individuals that want to contribute to open source projects instead of projects within companies. There are even developers on GitHub who hope to create open source content sustainably as their main or sole line of work.
-GitHub Developer Environment
One of the most underrated GitHub features is the developer environment, you can use VS Code in the browser.
All you have to do is press the period key or go to GitHub.dev
-GitHub Command Line Interface
“Goodbye, context switching. Hello, terminal.”
GitHub CLI is a command-line tool that brings pull requests, issues, and other features into the terminal.
GitHub Student Developer Pack
The GitHub Student Developer Pack is the most underrated one. This is made for student developers to help them to have hands-on experience with various technologies. Some of their partners Like Canva are so generous that they give 1 year free of cost.
Special Repository
You can have an awesome repo to write more info about you and showcase it as your landing page to GitHub. All you have to do is create a repository with the same name as your GitHub username.
File Finder
You can easily navigate through files in a repository. Press t in the repository you want to find.
GitHub Pages
Hosted directly from your GitHub repository. Just edit, push, and your changes are live. You can host your pages free of cost at Github pages.
GitHub Copilot
With GitHub Copilot, get suggestions for whole lines or entire functions right inside your editor. You can be more and more productive using this. You can sign up and wait for the approval.
What Are The Benefits Of Github?
It Makes It Easy to Contribute to Your Open Source Projects
To be honest, nearly every open-source project uses GitHub to manage their project. Using GitHub is free if your project is open-source, and GitHub includes a wiki and issue tracker that makes it easy to include more in-depth documentation and get feedback about your project. If you want to contribute, you just fork a project, make your changes and then send them a pull request using GitHub web interface.
Documentation
By using GitHub, you make it easier to get excellent documentation. Their help section and guides have articles for nearly any topic related to git that you can think of.
Showcase Your Work
Are you a developer who wishes to attract recruiters? GitHub is the best tool you can rely on for this. Today, when searching for new recruits for their project, most companies look into the GitHub profiles. If your profile is available, you will have a higher chance of being recruited even if you are not from a great university or college.
Markdown
Markdown allows you to use a simple text editor to write formatted documents. GitHub has revolutionized writing by channeling everything through Markdown: the issue tracker, user comments, everything. With so many other programming languages to learn for setting up projects, it’s really a big benefit to have your content inputted in a format without having to learn yet another system.
GitHub is a Repository
This was already mentioned before, but it’s important to note, GitHub is a repository.
What this means that it allows your work to get out there in front of the public. Moreover, GitHub is one of the largest coding communities around right now, so it’s wide exposure for your project.
Track Changes in Your Code Across Versions
When multiple people collaborate on a project, it’s hard to keep track revisions—who changed what, when, and where those files are stored. GitHub takes care of this problem by keeping track of all the changes that have been pushed to the repository. Much like using Microsoft Word or Google Drive, you can have a version history of your code so that previous versions are not lost with every iteration.
Integration Options
GitHub can integrate with common platforms such as Amazon and Google Cloud, services such as Code Climate to track your feedback, and can highlight syntax in over 200 different programming languages.
Security
GitHub does offer private repositories on both free and paid tiers, but even private repositories have their issues. For high-value intellectual property, you’re putting all of this in the hands of GitHub as well as anyone who has a login, which, like many sites, has had security breaches before and is targeted constantly.
GitHub has taken steps to make things more secure (such as the Dependabot addition to GitHub Enterprise), and there are steps you can take as well, but there is still an element of risk that comes with GitHub being cloud-based. This is why some clients and employers will only allow code on their own secure internal Git as a matter of policy.
Pricing
Some of GitHub’s features, as well as features on other online repositories, are locked behind a SaaS paywall. If you have a large team, this can add up fast. Those who already have a dedicated IT team and their own internal servers are often better off using their own internal Git for cost reasons, but for most the cost isn’t outrageous and GitHub’s pricing has improved (e.g. free private repositories for unlimited users)
How To Use Github?
Anyone can use GitHub's hosting tools and organizational features to organize and host their own project. However, community features and the sponsorship program give passionate users a bigger way to contribute to the open source ecosystem. For the experienced developer, GitHub is a great way to contribute to the space by sharing work and expertise. For the beginning and aspiring developer, getting started on GitHub is a great way to learn more about coding and hone your skills within a dedicated and supportive community. Github can be used via creating and maintaining a repository, beginning and managing a new branch, making changes to a file and committing them to GitHub, and opening and merging a pull request.
Follow the steps below to get started using Git.
Step 1: Install Git and Create a GitHub Account
The first thing you need to do is to install Git and create a GitHub account. There are several different ways to install Git. Follow the instructions below to install Git on your system:
After installing Git on your machine, the next step is to create a free GitHub account.
Follow these steps:
1. Visit the official account creation page: Join GitHub
2. Pick a username, enter your email address, and choose a password.
3. Opt for or opt out of receiving updates and announcements by checking/unchecking the Email preferences checkbox.
4. Verify you're not a robot by solving the Captcha puzzle.
5. Click Create account.
6. GitHub sends a launch code to the specified email address. Copy-paste the code in the designated field.
7. Optionally, enter account personalization details when asked or Skip, and click Continue.
You have now successfully created a GitHub account.
Step 2: How To Create The Repository and Build The Team
To create the repository, we simply used the GitHub web interface and clicked on the Repositories
tab, and then on the New
button. We named the repository potionfy
and We added a short description and a Readme.md
file.
After the repository was created, we invited Harry to work on it. To do so, we clicked on the Settings
tab in the potionfy
repository, then in the Manage access
option, and finally in the Add people
button. By entering Harry's GitHub username (or email address) in the pop-up window and clicking on the Add Harry(...) to this repository
, we managed to send the invitation to Harry.
He accepted it, and by doing so, both team members were ready to start working on their project.
Step 3: How to create a file
We started the project by creating the initial file the Potionfy SaaS product will use: index.html
.
In order to do so, we created the file using the GitHub web interface by positioning ourselves in the repository and clicking on the Add file
> Create new file
buttons. Then we added the name of the file, its content, and a meaningful commit message. After clicking on the Commit new file
button, the file was created on the repository.
Step 4: How to create an issue and work on it
We need to move on to work on the marketing related to Potionfy launch, so we told Harry to add a simple landing message to the index.html
file. So, we proceeded to create an issue in the repository by clicking on the Issues
tab and clicking on the New issue
button. After the issue was created, Harry took a look at it (also by going to the issues
tab in the Potionfy repository) and let us know that he will be working on it by leaving a comment and assigning the issue to himself. By working with this dynamic, the team will know who is working on what.
Step 4: How to set up the local development environment
In order to work on the project's index.html
file, Harry chose to work locally, so he needed to clone the potionfy
repository in his development environment (the Linux virtual machine).
The first thing he had to do was set up the SSH keys to work with GitHub. He followed GitHub's Generating a new SSH key and adding it to the ssh-agent tutorial to do so. He then added the key to his GitHub account, following the Adding a new SSH key to your GitHub account tutorial.
Then, Harry opened Hermione's repository on GitHub and copied the link to clone it:
Now in his local development environment, he created a new directory in which all his work would be centralised:
$ mkdir ~/development
$ cd ~/development
Finally, he cloned the repository by typing git clone
and pasting the code he just copied from GitHub (which is the address of the repository):
$ git clone git@github.com:Hermione-Colo-Codes/potionfy.git
In this way, he now has a local copy of the repository and he is ready to start working on it.
GitHub workflow
In order to work on a repository, this is the workflow GitHub recommends:
Create a branch
Make changes
Create a pull request
Address review comments
Merge your pull request
Delete your branch
Step 1: Create a branch
As it is a good practice not to work on the master branch directly, We created a new branch related to the issue on which he will be working.
We chose to do this on the GitHub repository, but We could have done the same in our local environment using Git commands.
WE chose a meaningful name and prefixed the name with the number of the related issue (which is 1
, in this case).
Step 2: Work on the branch locally
After the branch was created, We started working on it.
git pull
The first thing we did was a pull
of the whole repository so we could see the branch in our local development environment. git checkout
With the new branch in our environment, we switched to it by using the git checkout <name_of_branch>
command. After doing so, we ensured we was working in the correct branch with the git branch
command.
Solve the issue
We started working on solving the issue. In order to do so, we opened the index.html
file and added a h1
header to it. After the changes were made, we saw how Git reacted to this change. we then added the file to the staging area with the git add
command and committed the change with the git commit
command. Note how the commit message also includes the id of the issue, which in this case is #1
.
Push to the repository
The next step we need to do is to push the changes to the repository.
~/development/potionfy$ git push
Create a pull request
We then clicked on the Compare and pull request
button in the GitHub repository (making sure our branch was selected in the branch left drop-down menu). This pull request will be analysed by others and they will decide if it can be merged to the master branch or not.
I hope you liked my article about Github...