Projects on GitHub can be accessed and managed using the standard Git command-line interface; all standard Git commands work with it. GitHub also allows users to browse public repositories on the site. Multiple desktop clients and Git plugins are also available. In addition, the site provides social networking-like functions such as feeds, followers, wikis (using wiki software called Gollum), and a social network graph to display how developers work on their versions ("forks") of a repository and what fork (and branch within that fork) is newest.
Anyone can browse and download public repositories, but only registered users can contribute content to repositories. With a registered user account, users can have discussions, manage repositories, submit contributions to others' repositories, and review changes to code. GitHub began offering limited private repositories at no cost in January 2019 (limited to three contributors per project). Previously, only public repositories were free. On April 14, 2020, GitHub made "all of the core GitHub features" free for everyone, including "private repositories with unlimited collaborators." In May 2019 GitHub, Inc., began encrypting source code on github.com by default.
The fundamental software that underpins GitHub is Git, written by Linus Torvalds, creator of Linux. The additional software that provides the GitHub user interface was written using Ruby on Rails and Erlang by GitHub, Inc., developers Wanstrath, Hyett, and Preston-Werner.
The primary purpose of GitHub is to facilitate the version control and issue tracking aspects of software development. Labels, milestones, responsibility assignment, and a search engine are available for issue tracking. For version control, Git (and, by extension, GitHub) allows pull requests to propose changes to the source code. Users who can review the proposed changes can see a diff between the requested changes and approve them. In Git terminology, this action is called "committing" and one instance of it is a "commit." A history of all commits is kept and can be viewed at a later time. Branches allow developers to work on separate lines of development within the same repository without immediately modifying the main development line. Changes made on a branch can later be integrated into another branch through a merge or a pull request, supporting parallel development and code review.
Read the full text
In addition, GitHub supports the following formats and features:
Documentation, including automatically rendered README files in a variety of Markdown-like file formats (see README § On GitHub)
Wikis, with some repositories consisting solely of wiki content. These include curated lists of recommended software which have become known as awesome lists.
GitHub Codespaces, an online IDE providing users with a virtual machine intended to be a work environment to build and test code
Graphs: pulse, contributors, commits, code frequency, punch card, network, members
Integrations Directory
Email notifications
Discussions
Option to subscribe someone to notifications by @ mentioning them.
Emojis
Nested task-lists within files
Visualization of geospatial data
3D render files can be previewed using an integrated STL file viewer that displays the files on a "3D canvas." The viewer is powered by WebGL and Three.js.
Support for previewing many common image formats, including Photoshop's PSD files
PDF document viewer
Security Alerts of known Common Vulnerabilities and Exposures in different packages
GitHub's Terms of Service do not require public software projects hosted on GitHub to meet the Open Source Definition. The terms of service state, "By setting your repositories to be viewed publicly, you agree to allow others to view and fork your repositories."
GitHub Enterprise
GitHub Enterprise is a self-managed version of GitHub with similar functionality. It can be run on an organization's hardware or a cloud provider and has been available as of November 2011. In November 2020, source code for GitHub Enterprise Server was leaked online in an apparent protest against DMCA takedown of youtube-dl. According to GitHub, the source code came from GitHub accidentally sharing the code with Enterprise customers themselves, not from an attack on GitHub servers.
GitHub Pages
In 2008, GitHub introduced GitHub Pages, a static web hosting service for blogs, project documentation, and books. All GitHub Pages content is stored in a Git repository as files served to visitors verbatim or in Markdown format. GitHub is integrated with the Jekyll static website and blog generator and GitHub continuous integration pipelines. Each time the content source is updated, Jekyll regenerates the website and automatically serves it via GitHub Pages infrastructure.
Like the rest of GitHub, it includes free and paid service tiers. Websites generated through this service are hosted either as subdomains of the github.io domain or can be connected to custom domains bought through a third-party domain name registrar. GitHub Pages supports HTTPS encryption.
GitHub Actions
GitHub Actions was officially launched on November 13, 2019. It was first announced in October 2018 at GitHub Universe as a way to automate workflows, but the full general availability (GA) release came a year later in 2019. GitHub Actions, which allows building continuous integration and continuous deployment pipelines for testing, releasing and deploying software without the use of third-party websites/platforms. Unlike many other CI/CD tools, GitHub Actions launched with a marketplace where developers could share and reuse prebuilt actions (e.g., testing, linting, deployments). GitHub wanted to reduce reliance on third-party services and keep developers within the GitHub ecosystem. GitHub Actions provided hosted runners (Linux, Windows, macOS) that could dynamically scale, eliminating the need for self-managed build servers.
Gist
GitHub also operates a pastebin-style site called Gist, which is for code snippets, as opposed to GitHub proper, which is usually used for larger projects. Tom Preston-Werner débuted the feature at a Ruby conference in 2008.
Gist builds on the traditional simple concept of a pastebin by adding version control for code snippets, easy forking, and TLS encryption for private pastes. Because each "gist" is its own Git repository, multiple code snippets can be contained in a single page, and they can be pushed and pulled using Git.
Unregistered users could upload Gists until March 19, 2018, when uploading Gists was restricted to logged-in users, reportedly to mitigate spamming on the page of recent Gists.
Gists' URLs use hexadecimal IDs, and edits to Gists are recorded in a revision history, which can show the text difference of thirty revisions per page with an option between a "split" and "unified" view. Like repositories, Gists can be forked, "starred", i.e., publicly bookmarked, and commented on. The count of revisions, stars, and forks is indicated on the gist page.
Education program
GitHub launched a new program called the GitHub Student Developer Pack to give students free access to more than a dozen popular development tools and services. GitHub partnered with Bitnami, Crowdflower, DigitalOcean, DNSimple, HackHands, Namecheap, Orchestrate, Screen hero, SendGrid, Stripe, Travis CI, and Unreal Engine to launch the program.
In 2016, GitHub announced the launch of the GitHub Campus Experts program to train and encourage students to grow technology communities at their universities. The Campus Experts program is open to university students 18 years and older worldwide. GitHub Campus Experts are one of the primary ways that GitHub funds student-oriented events and communities, Campus Experts are given access to training, funding, and additional resources to run events and grow their communities. To become a Campus Expert, applicants must complete an online training course with multiple modules to develop community leadership skills.
GitHub Marketplace service
GitHub also provides some software as a service (SaaS) integrations for adding extra features to projects. Those services include:
Waffle.io: project management for software teams, which allows users to automatically see pull requests, automated builds, reviews, and deployments across repositories.
Rollbar: provides real-time debugging tools and full-stack exception reporting.
Travis CI: continuous integration service.
GitLocalize: provides utilities to manage project translation and internationalization.
GitHub Mobile
In 2019, GitHub officially launched its native mobile applications for both iOS and Android. This announcement was made during GitHub Universe 2019, with the apps being released in beta for iOS initially, followed by an Android beta and full public release in early 2020.
GitHub Sponsors
GitHub Sponsors allows users to make monthly money donations to projects hosted on GitHub. The public beta was announced on May 23, 2019, and the project accepts waitlist registrations. The Verge said that GitHub Sponsors "works exactly like Patreon" because "developers can offer various funding tiers that come with different perks, and they'll receive recurring payments from supporters who want to access them and encourage their work" except with "zero fees to use the program." Furthermore, GitHub offers incentives for early adopters during the first year: it pledges to cover payment processing costs and match sponsorship payments up to $5,000 per developer. Furthermore, users can still use similar services like Patreon and Open Collective and link to their websites.