07 · What Is GitHub? (repos, issues, web UI)¶
GitHub is a website (and platform) that hosts Git repositories and adds collaboration tooling on top of plain Git: a web UI for browsing code, issue tracking, pull requests for reviewing changes, project boards, GitHub Actions for automation, and social features (following users, starring repos). It's not the only such platform — GitLab and Bitbucket are close alternatives with mostly-equivalent concepts — but GitHub is the most widely used, and this course uses it throughout.
Creating a GitHub account¶
- Go to github.com and click Sign up.
- Use the same email you configured in
git config --global user.email(module 2) so commits you push are correctly linked to your profile. - Choose a username — this becomes part of your profile URL
(
github.com/yourusername) and every repo URL you create, so pick something you're comfortable using publicly and long-term. - The free plan is sufficient for everything in this course, including unlimited public and private repositories.
Anatomy of a repository page¶
Every GitHub repo (e.g. github.com/octocat/Hello-World) has the same
layout:
- Code tab — browse files at the current branch/commit, view a file's history, and see the README rendered below the file list.
- Issues tab — a lightweight tracker for bugs, feature requests, and tasks (covered in depth in Level 2).
- Pull requests tab — proposed changes waiting for review/merge (covered in Level 2).
- Actions tab — CI/CD workflows that run automatically (covered in Level 3).
- Branch selector (top-left of the file list) — switch which branch's files you're viewing.
<> Codebutton — gives you the clone URL (HTTPS or SSH) and options to download a ZIP or open in GitHub Desktop/Codespaces.
Issues: lightweight tracking¶
An issue is a single tracked item — a bug report, a feature idea, a question — with a title, a description (rendered as Markdown), labels, assignees, and a comment thread. Anyone with access to the repo (or, on public repos, anyone with a GitHub account) can open one.
Title: Login button doesn't respond on mobile Safari
## Steps to reproduce
1. Open the site on an iPhone in Safari
2. Tap "Log in"
## Expected
Login modal opens
## Actual
Nothing happens; no console errors
Issues can be closed manually, or automatically when a linked pull request merges (by writing "Closes #12" in the PR description — you'll use this in Level 2).
Stars, forks, and watching¶
- Star — bookmark a repo you find interesting; also a rough popularity signal.
- Watch — subscribe to notifications for activity on a repo.
- Fork — create your own full copy of someone else's repository under your account, which you can freely modify. This is the standard way to contribute to a project you don't have write access to (covered in module 10, and in depth in Level 2).
HTTPS vs. SSH — how you'll authenticate¶
When you clone or push, GitHub needs to know it's really you. Two common methods:
- HTTPS — clone with a URL like
https://github.com/user/repo.git. Historically used your password, but GitHub disabled password authentication for Git operations in 2021; you now authenticate with a Personal Access Token (PAT) used in place of a password, or by signing in through theghCLI or Git Credential Manager, which handle the token exchange for you. - SSH — clone with a URL like
git@github.com:user/repo.git, and authenticate using an SSH key pair you generate once and add to your GitHub account settings. No token to type on every push.
This course sets up authentication concretely in the next module, when you create and push your first real repository.
The web editor and Codespaces¶
For quick edits, GitHub lets you edit files directly in the browser (press
. on any repo page to open a full VS Code-like editor, or click the
pencil icon on a file) — commits made this way go straight to the
repository without needing Git installed locally. Codespaces goes
further, giving you a full cloud development environment (a container with
your code already cloned) accessible from the browser. Neither replaces
learning the Git CLI — but they're worth knowing about for quick fixes from
a device without your usual setup.
How It Actually Works¶
GitHub is, at its core, a giant fleet of Git servers plus a database and web app layered on top — understanding where the line sits between "plain Git" and "GitHub's own product" clarifies a lot of confusing behavior:
- When you clone
https://github.com/user/repo.git, you're talking to a bare repository on GitHub's storage — a.gitobject database with no working directory, served over the same smart HTTP protocol described in the previous module. Every push you make lands as ordinary Git objects (blobs/trees/commits) in that bare repo — GitHub isn't storing your code in some proprietary format underneath. - Forking is not a Git concept at all —
git forkdoesn't exist. GitHub implements a fork by copying the repository's object database server-side (efficiently, via shared storage/hard-links where the same blobs would otherwise be duplicated) into a new repo under your account, with metadata linking it back to the "parent" repo so GitHub can offer the pull-request UI between them. Once forked, it's a perfectly ordinary Git remote — Git itself doesn't know or care that it's a "fork." - Issues, pull requests, stars, and the web editor are entirely
GitHub's database, not Git's — a pull request is a database row (base
branch, head branch, comments, review state) that references two Git
refs; merging it just runs an ordinary
git merge(or squash/rebase) on GitHub's servers and updates the base branch's ref, exactly asgit mergewould locally. This is why a repo's full commit history survives intact if you ever migrate away from GitHub, but its issues, PR discussions, and stars do not — they live in GitHub's database, not in the.githistory. - HTTPS vs. SSH differ only in transport and auth, not in what's transferred — both negotiate the same object/packfile exchange; HTTPS authenticates via a token exchanged in the request, SSH via a public-key challenge during the SSH handshake, before either one even starts talking Git's protocol.
Exercise¶
Create a GitHub account if you don't have one (using the email from your
git config). Find a well-known open-source repository (for example,
https://github.com/torvalds/linux or any project you use). Open its
Issues tab and read three real issues to see how they're structured. Star
the repository. Note down the repo's clone URL from the <> Code button —
you'll use a URL just like it in the next module.