Navigating Repositories
Exploring a repository: tabs, files, README, branches, and commit history.
Listen
Transcript
Alex: Welcome back. Today we're getting comfortable inside a GitHub repository, which is the place most of your collaboration work starts.
Jamie: And repository is one of those words people hear constantly, but it can still feel fuzzy. What is it, in plain language?
Alex: A repository is a project folder tracked by Git. It can hold code, documents, images, configuration files, and the history of changes to all of those files. On GitHub, the repository page is the web view of that project.
Jamie: So when I open a repo, I'm not just looking at a file cabinet. I'm looking at the current project plus its memory.
Alex: Exactly. Chapter 3 is a confidence-building orientation chapter, so there is no graded automation check here. The goal is to learn the page structure, practice with headings and landmarks, confirm that you can find your way around, and then bring that confidence into the Learning Room work later.
Jamie: I like that this is not treated as busywork. If I can find the tabs, files, README, branches, and history, later issues and pull requests are much less mysterious.
Alex: When you land on a repository URL, the Code tab is usually the home page. Your screen reader may announce a page title like owner slash repo-name, a short description, and GitHub. The first heading is usually the repository name.
Jamie: So my first check is, did I land where I meant to land? If the heading says a different owner or repo name, I stop before doing anything else.
Alex: Yes. A dependable orientation routine is: press 1 to hear the main heading, press D to move through landmarks, and use the heading list with NVDA+F7 or the VoiceOver rotor with VO+U to scan what is on the page.
Jamie: What landmarks should people expect to hear?
Alex: Common ones include Repository navigation for the tab bar, Main for the file area and repository details, and Repository Files Navigation for the rendered README when a README exists. GitHub's visual layout can change with screen width, account features, and product updates, so landmarks, headings, tab names, and shortcuts are more reliable than memorizing the exact visual position.
Jamie: And the learning cards in the chapter support different ways of working, right? Visual and mouse, low vision, NVDA or JAWS, and VoiceOver.
Alex: Right. Open the cards that match your setup. The official GitHub Accessibility Guide is also a good companion reference, especially for NVDA, while this course adds workshop context and other perspectives.
Jamie: Once I'm oriented, the tab bar is usually the next thing I want. What belongs there?
Alex: The main repository tabs often include Code, Issues, Pull requests, Actions, and sometimes Discussions, Projects, Wiki, Security, Insights, and Settings. Settings appears only when you have the right permissions, and some tabs appear only if the repository owner enabled them.
Jamie: And the tab labels tell me more than just the name.
Alex: They can. Issues might announce the number of open issues, Pull requests might announce open pull requests, and the current tab may be announced as selected or current. At high zoom, the tabs may wrap across lines, but they are still links. Keyboard shortcuts can help too: G then I jumps to Issues, and G then P jumps to Pull requests inside a repository.
Jamie: Now the Code tab has the file list, which can be intimidating if the repo is large.
Alex: The files table is the core of the Code tab. It has file and folder names, the most recent commit message for each item, and the age of that change. Screen reader users can often press T to move to the next table and land on the files table.
Jamie: How do I read one row without getting lost?
Alex: Start in the Name column, then move across to the Message column, then to the Age column. A row might tell you docs slash, Add accessibility guide, 3 days ago. Folders often end with a slash, and opening a folder reloads the page with that folder's contents. You can go back up with the browser Back button or the breadcrumb links.
Jamie: Let's talk branches, because that word shows up near the file list and it sounds like something I could break.
Alex: A branch is a version line of the repository. The default branch is the main shared line, usually called main, and it is what you see first unless you choose a different branch. People use branches to work on changes without disturbing the default branch.
Jamie: So the branch selector changes what version of the files I'm viewing.
Alex: Yes. The branch selector is near the top of the file area on the Code tab. Open it, and you'll find a dropdown where you can search branches, choose another branch, or switch to a tag if the repository has tags.
Jamie: What is a tag in this context?
Alex: A tag is a named point in history, often used for releases. Switching to a tag lets you inspect the files as they existed at that release point. It's useful when you want to understand what changed in the last release, or compare current work with a stable snapshot.
Jamie: That helps. Branches are active lines of work, and tags are named snapshots.
Alex: At some point, you may want the repository on your computer. Cloning means copying a remote repository from GitHub to a local folder so you can inspect or work with it using local tools.
Jamie: And cloning is not the same as forking.
Alex: Correct. A clone is a local copy on your machine. A fork is your own GitHub-hosted copy of someone else's repository. A branch is a line of work inside a repository. Those three ideas connect, but they are not interchangeable.
Jamie: What are the practical cloning choices?
Alex: With the GitHub CLI, you can use gh repo clone owner/repo-name, so you do not need to paste the full URL. You can also clone and move into the folder with a command sequence such as gh repo clone owner/repo-name followed by cd repo-name. With standard Git, you can use git clone and the repository URL.
Jamie: And the ZIP download?
Alex: Downloading a ZIP gives you the files, but not the Git history and not the normal Git connection back to GitHub. It is fine for reading or quick inspection. For contribution work, cloning is usually the better choice.
Jamie: Where do watching, starring, and forking fit in?
Alex: Watching subscribes you to notifications. Starring bookmarks or signals interest in a repository. Forking creates your own GitHub copy, often used when you need a place to propose changes and you do not have direct write access.
Jamie: Once I open a single file, the page feels different from the file table. What should I listen for?
Alex: A file page usually has the repository navigation, the file path or breadcrumb, the file content area, and file action buttons. A Markdown file like README.md is often rendered as formatted headings, links, lists, and text. A code file is usually shown with line numbers and code content.
Jamie: So for a README, I can navigate by headings like I would on a web page.
Alex: Exactly. For code, line numbers can help you locate a specific part of the file, and screen reader behavior may depend on your browser and settings. File action buttons may include Raw, Blame, History, Copy path, Download, and Edit when editing is available.
Jamie: How do I reach those buttons without hunting visually?
Alex: Use Tab, button navigation, or your screen reader's links and buttons list. If you choose Edit, GitHub may open an editor if you have permission. If you do not have permission, GitHub may guide you toward making the change in a fork or another editable copy.
Jamie: That is a good moment to slow down and check where the change will go before typing.
Alex: GitHub also lets you inspect history. Commit history answers who changed what and when, and often why, based on the commit message.
Jamie: Where do I find that from the Code tab?
Alex: Near the file list, there is usually a commits link showing the number of commits. The commits page lists recent commits with messages, authors, and dates. Opening one commit page shows the files changed and the diff, which is the before-and-after view of the lines.
Jamie: And Blame is related, but more specific?
Alex: Yes. The Blame view shows, line by line, which commit last changed each part of a file. It is useful when you need context for a line: who touched it, when, and which commit message explains the change. It is not about blaming a person; it is about tracing history.
Jamie: What if I know the file name but not where it lives?
Alex: Use Go to file. The T shortcut opens a search-as-you-type file finder from the repository. Browser Find with Ctrl+F can help on the current page, but Go to file searches the repository's file paths. If you are navigating sidebars or collapsed areas, use landmarks, headings, Tab, and the question mark shortcut to review available GitHub keyboard shortcuts.
Jamie: So search is part of navigation, not a failure to navigate.
Alex: Before you contribute, scan the repository's About area. It often includes the short description, website link, topics, license, and sometimes release or package information.
Jamie: Topics are the little labels like accessibility, documentation, or python?
Alex: Yes. They help you understand the project's subject area. The license tells you the rules for reuse and contribution, and if there is no license, you should be cautious about assuming reuse rights.
Jamie: Can we connect all of this to real situations?
Alex: Sure. If you want to know what a project does, read the description, About area, and README. If you want a good file to edit, inspect the file tree, README, open issues, and contribution guidance. If you want to know who has worked on a file recently, use History or Blame. If you want to understand a release, look at tags, releases, and recent commits. If you want to contribute, start with Issues, README, contributing docs, and the repository's current activity.
Jamie: And if I get stuck?
Alex: Return to the orientation routine: main heading, landmarks, headings list, then tabs. Check whether the page changed because you opened a folder, switched branches, searched files, or moved from the Code tab to another tab. If needed, ask a peer or facilitator to confirm what page and branch you are on.
Jamie: This connects directly to Challenge 01, Find Your Way Around, in the Learning Room. That is where learners practice repository orientation, headings, tabs, file tree navigation, and building confidence in their own provisioned repository.
Alex: A simple practice run is the five-tab tour: visit Code, Issues, Pull requests, Actions, and Settings if you have access, or another visible tab if you do not. On each one, identify the main heading, one useful landmark, and how you would get back to Code. That's enough to turn a repo from a wall of links into a place you can move through on purpose.
Workshop Content
Companion Podcast and Transcript
Use audio and transcript companions to review concepts in a conversational format.
Navigating Repositories
Companion audio: this episode reinforces key ideas and may not be a word-for-word reading of this page.
Open audio file (external) Full transcript source (external)
Transcript preview
Alex: Welcome back. Today we're getting comfortable inside a GitHub repository, which is the place most of your collaboration work starts.
Jamie: And repository is one of those words people hear constantly, but it can still feel fuzzy. What is it, in plain language?
Alex: A repository is a project folder tracked by Git. It can hold code, documents, images, configuration files, and the history of changes to all of those files. On GitHub, the repository page is the web view of that project.
Jamie: So when I open a repo, I'm not just looking at a file cabinet. I'm looking at the current project plus its memory.
Navigating Repositories
Listen to Episode 3: Navigating Repositories - a conversational audio overview of this chapter. Listen before reading to preview the concepts, or after to reinforce what you learned.
Related appendices: Appendix A: Glossary | Appendix B: Screen Reader Cheat Sheet Authoritative sources: GitHub Docs: About repositories | GitHub Accessibility Guide: Repositories
A Screen Reader Guide to GitHub Repositories
This guide covers everything you need to explore a GitHub repository using your keyboard and screen reader. No mouse required.
Official GitHub Accessibility Guide: GitHub publishes an NVDA-focused guide for navigating repositories with a screen reader at Using GitHub Repositories with a Screen Reader. This chapter covers the same material with additional perspectives (VoiceOver, low vision, CLI) and workshop-specific guidance. Use the official guide as a companion reference.
Workshop Recommendation (Chapter 3)
Chapter 3 is a confidence-building orientation chapter.
- Challenge count: none
- Automation check: none
- Why: this chapter teaches navigation foundations that are practiced in later issue and PR chapters.
Safety-First Learning Pattern
Use this sequence before moving to graded chapters:
- Learn the page structure (heading, landmarks, tabs).
- Practice orientation (
1,D, heading list). - Confirm readiness with a peer or facilitator.
- Move to Chapter 4 for Learning Room orientation, then Chapter 5 for issue-based, traceable challenges.
About Learning Cards in This Chapter
This chapter provides learning cards: expandable blocks that offer perspective-specific guidance for different ways of working. Not every card appears at every step. Open the ones that match how you work.
The following table describes the four learning card types used in this chapter.
| Card | Who it helps | What it covers |
|---|---|---|
| Visual / mouse | Sighted users navigating with a mouse or trackpad | Click targets, visual cues, layout orientation |
| Low vision | Users with magnification, zoom, or high-contrast themes | Zoom-friendly navigation, locating controls at high magnification |
| Screen reader (NVDA / JAWS) | Screen reader users on Windows | Keystroke sequences, Focus and Browse mode, landmark navigation |
| Screen reader (VoiceOver) | Screen reader users on macOS | VO key sequences, rotor usage, interaction model |
What Is a Repository Page?
When you navigate to a GitHub repository (e.g., https://github.com/owner/repo-name), you land on the repository home page (also called the Code tab). This page has several distinct regions:
Description
GitHub can change visual placement based on viewport width, account features, repository settings, and product rollout. The dependable structure is the set of named regions and controls: the global navigation, the repository H1 heading, the Repository navigation landmark, the Code tab, the branch selector, the file list, optional repository sidebar information, and the rendered README.md when present.
On a wide desktop layout, these often appear in a familiar order: global navigation, repository header, repository tabs, file/code panel, optional sidebar, and rendered README. Teach that order as a map, not as a guarantee. When the visual order differs, use headings, landmarks, tab names, and keyboard shortcuts to re-orient.
Landing on a Repository - What to Expect
When you first navigate to a repo URL:
- The page title is announced with the format:
owner/repo-name: Short description - GitHub - First heading (
1key) will navigate to the repo name: "owner/repo-name" - The tab bar is a landmark labeled "Repository navigation"
Orientation sequence (do this on every new repo)
Step 1: Press 1 - hear the repo name
Step 2: Press D - navigate through landmarks to learn page structure
Step 3: Press NVDA+F7 (or VO+U) - scan headings to understand what's on the page
Key landmark names you will hear with
D: Repository pages have three main landmark sections: "Repository Navigation" (the tab bar), "Main" (the file tree, branch selector, repo details, and contributors), and "Repository Files Navigation" (the rendered README content). Within each landmark, pressHor2to navigate subsections - most are organized under heading level 2.
Navigating the Repository Tabs
The main tabs are: Code, Issues, Pull Requests, Discussions, Actions, Projects, Wiki, Security, Insights, and Settings (Settings only visible to maintainers). Not all tabs appear on every repository - Discussions, Wiki, and Projects must be enabled by the repository owner.
How to reach the tabs
Visual / mouse users
The tab bar is visible just below the repository name. Click the tab you want - Code, Issues, Pull requests, etc. The active tab is underlined. The number next to a tab (e.g., "Issues · 14") shows how many open items are in that section.
Low vision users (zoom, high contrast)
The tab bar is just below the repository name. At 200% browser zoom or higher:
- The tabs may wrap to two lines. Each tab remains a standard link.
- The active tab is indicated by an underline. In Windows High Contrast mode, the underline uses the system accent color.
- Tab counts ("Issues · 14") appear as part of each tab's text and remain readable at high magnification.
- If tabs are hard to click at high zoom, press
Tabfrom the repo heading to cycle through each tab link sequentially. - Keyboard shortcut: Press
GthenIto jump directly to Issues, orGthenPfor Pull requests. These two-key shortcuts work from any page in the repository.
Screen reader users (NVDA / JAWS)
- Press
Dto jump to the "Repository navigation" landmark - Press
KorTabto navigate between the tab links
Screen reader users (VoiceOver)
VO+U→ Landmarks rotor → navigate to "Repository navigation"VO+Rightto move through items in the landmark
Reading the tab labels
Each tab link reads with its name and the count of items: "Issues, 14 open" or "Pull requests, 3 open." The active tab is marked with aria-selected="true" - your screen reader will announce it as "selected" or "current."
The Files Table
See also: Appendix B: Screen Reader Cheat Sheet lists the keyboard shortcuts for navigating repository file trees.
The files table is the core of the Code tab - it shows every file and folder in the repo.
Reaching the files table
Visual / mouse users
The file table is the main panel of the Code tab, showing folders and files with their most recent commit message and how long ago each was changed. It’s visible immediately below the branch selector. Click any folder name to open it, or click a file name to view the file.
Low vision users (zoom, high contrast)
The file table occupies the main content area of the Code tab. At high magnification:
- The table has three columns: Name, Message (last commit), and Date. At 200%+ zoom, the Message and Date columns may be truncated. Hover over truncated text to see the full message in a tooltip.
- Folder icons appear before folder names; file icons appear before file names. In Windows High Contrast mode, these icons use system colors with visible outlines.
- Click any folder or file name to navigate into it. The names are standard links with hover underlines.
- Use
Ctrl+F(browser Find) to search for a specific file name rather than scrolling a long file list at high zoom. - The Go to file button (
Tkeyboard shortcut) opens a search-as-you-type file finder. This is the fastest way to navigate to a specific file at any zoom level.
Screen reader users
Press T to jump to the next table on the page. The first table you will hit is usually the files table. NVDA will announce: “Table with [N] rows and 3 columns.”
The three columns are:
- Name - file or folder name
- Message - the most recent commit message that changed this file
- Age - how long ago that commit happened
Navigating the files table
| Goal | Keys (NVDA/JAWS) | Keys (VoiceOver) |
|---|---|---|
| Move down one row (next file) | Ctrl+Alt+↓ |
VO+Shift+↓ |
| Move up one row | Ctrl+Alt+↑ |
VO+Shift+↑ |
| Move right one column | Ctrl+Alt+→ |
VO+Shift+→ |
| Move left one column | Ctrl+Alt+← |
VO+Shift+← |
| Open a file or folder | Enter (on the Name column) |
VO+Space |
Reading a row
Navigate to the Name column, hear the filename, then move right to read the commit message, then right again for the age. For example: "docs/ | Add accessibility guide | 3 days ago"
Folder vs file
- Folders end with a
/in the Name column - When you open a folder, the page reloads showing the contents of that folder
- Press the back button or use the breadcrumb links to go back up
Learning Cards: The Files Table
Screen reader users
- Press
Tin Browse Mode to jump to the files table; NVDA announces "Table with N rows and 3 columns" - Navigate rows with
Ctrl+Alt+Down Arrow; each row reads: filename, last commit message, age - Press
Enteron the Name column to open a file or folder; pressAlt+Left Arrowin your browser to go back
Low vision users
- The files table uses alternating row shading; switch to a high-contrast GitHub theme if rows blend together at your zoom level
- Folder icons (small triangle) appear before folder names; file icons (small document) appear before file names
- If the commit message column is truncated at high zoom, hover over it to see the full message in a tooltip
Sighted users
- The files table is the large panel in the center of the Code tab, listing folders first (alphabetically), then files
- The rightmost column shows relative timestamps like "3 days ago"; hover to see the exact date and time
- Click a folder name to drill into it; breadcrumb links above the table let you navigate back up the path
The Branch Selector
The branch selector button sits just above the files table. It lets you switch which branch you are viewing.
How to open the branch selector
Visual / mouse users
Mouse users see the current branch name as a button with a dropdown arrow (e.g., main ▼) just above the file table. Click it to open the branch list. Type to filter branches, then click a branch name to switch.
Low vision users (zoom, high contrast)
The branch selector button shows the current branch name (e.g., "main") with a dropdown arrow. It sits just above the file table.
- At high magnification, the button may wrap next to other controls. It is a standard button with visible border and text.
- Click it to open a dropdown with a search field and branch list. Type part of a branch name to filter the list.
- In the dropdown, branch names can be long. At high zoom, they may truncate. Hover for the full name.
- In Windows High Contrast mode, the currently active branch is highlighted with the system selection color.
- Alternative: Press
Wto open the branch/tag picker directly from the keyboard. This avoids needing to find and click the button.
Screen reader users (NVDA / JAWS)
- After reaching the repository navigation landmark, press
Bto navigate to buttons - The branch button reads: “[branch-name] branch” (e.g., “main branch”)
- Press
Enterto open the dropdown
Screen reader users (VoiceOver)
Tabto the branch button (it will be labeled with the current branch name)VO+Spaceto open
Inside the branch dropdown
Step 1: The dropdown panel opens - it is a live region
Step 2: A search field appears - you can type to filter branches
Step 3: Press Tab to move to the results list
Step 4: Press ↓/↑ or Tab/Shift+Tab to navigate the list of branches
Step 5: Press Enter to switch to the selected branch
Step 6: Press Escape to close without switching
To return to the search field from the list: navigate to the tabs control at the top of the dropdown ("Branches" and "Tags" tabs), then use Shift+Tab.
VoiceOver: After activating the button, VO+Down to interact with the dropdown → VO+Right to navigate items.
Switching to a tag
Tags mark specific releases or versions. The branch dropdown also provides tag navigation:
- Open the branch button (same steps as above)
- Inside the dropdown, navigate to the tabs control at the top (reads as "Branches tab" and "Tags tab")
- Use
←/→to switch to the Tags tab Tabto move to the tags list- Navigate with
↑/↓and pressEnterto select a tag
The repository page reloads showing the code at that tagged version.
Cloning a Repository
Cloning copies the repository to your local machine so you can work with it in VS Code or the terminal.
Visual / mouse users
- On the repository’s main page (Code tab), find and click the green Code button above the file table
- A popover opens showing HTTPS, SSH, and GitHub CLI tabs
- Click the HTTPS tab (default) and click the copy icon next to the URL
- Open your terminal,
cdto where you want the folder, and rungit clone <pasted-URL> - Alternatively, click Download ZIP to get a one-time archive without Git
Screen reader users
- Press
1orShift+1to navigate to the repository h1 heading - Press
Bto navigate to the next button - look for the “Code” button - Press
EnterorSpaceto open the Code flyout panel - The flyout has tabs: HTTPS, SSH, GitHub CLI
Tabto the HTTPS tab or SSH tab according to your preferenceTabto the “Copy url to clipboard” button and pressEnter- The URL is now in your clipboard - paste it into VS Code or your terminal
Alternative: Tab further to find Download ZIP if you want a one-time copy without Git.
VoiceOver: After activating the Code button, interact with the flyout panel with
VO+Shift+Down. UseVO+Rightto move to HTTPS/SSH tabs andVO+Spaceto select.
GitHub CLI (gh) alternative
Clone a repository with one command using the GitHub CLI:
# Clone using the repo's owner/name (no URL needed)
gh repo clone community-access/git-going-with-github
# Clone and cd into the folder
gh repo clone community-access/git-going-with-github && cd git-going-with-github
Or with standard Git
git clone https://github.com/community-access/git-going-with-github.git
cd git-going-with-github
Setup: Install the GitHub CLI from cli.github.com and authenticate with gh auth login. See Appendix D for details.
Learning Cards: Cloning a Repository
Screen reader users
- Navigate to the green "Code" button with
B(Browse Mode), pressEnterto open the flyout, thenTabto reach the HTTPS URL and the "Copy url to clipboard" button - After cloning in VS Code's terminal, press
Ctrl+Shift+Eto focus the Explorer panel; the cloned repository's file tree appears there - If the clone fails with an authentication error, VS Code will open a browser tab for OAuth sign-in; press
Alt+Tabto switch back after approving
Low vision users
- The green "Code" button is above the file table on the right side; at high zoom it may shift below the branch selector
- The clone URL in the flyout panel uses small monospace text; use the copy button (clipboard icon) instead of trying to select the text manually
- After cloning, VS Code's Explorer panel shows the folder tree on the left; zoom VS Code independently with
Ctrl+=if needed
Sighted users
- The green "Code" dropdown shows three tabs: HTTPS (default), SSH, and GitHub CLI, each with a one-click copy button
- After cloning, look for a notification in VS Code's bottom-right corner asking "Would you like to open the cloned repository?"; click "Open"
- The Source Control icon in VS Code's Activity Bar shows a badge number when there are uncommitted changes in your clone
Tool Cards: Clone a Repository
github.com (browser):
- Click the green Code button above the file table.
- Copy the HTTPS URL.
- You will paste this into your local tool of choice below.
github.dev (web editor):
No clone needed. Press . on any repository page to open it in the browser-based editor instantly.
VS Code Desktop:
- Press
Ctrl+Shift+P, type Git: Clone, pressEnter. - Paste the HTTPS URL and choose a local folder.
- Click Open when prompted.
GitHub Desktop:
- File > Clone Repository (or
Ctrl+Shift+O). - Paste the URL or select from your GitHub account list.
- Choose a local path and click Clone.
Git CLI (terminal):
git clone https://github.com/owner/repo.git
cd repo
Fork vs. Clone vs. Branch - What Is the Difference?
These three concepts are related but serve different purposes. Students often confuse them, so here is a side-by-side comparison.
The following table compares forks, clones, and branches across six dimensions.
| Dimension | Fork | Clone | Branch |
|---|---|---|---|
| What it creates | A new repository on GitHub under your account | A local copy of a repository on your computer | A named pointer to a line of commits within the same repository |
| Where it lives | On GitHub (your account) | On your local machine | Inside any repository (local or remote) |
| Relationship to original | Linked (GitHub tracks the "parent" repo) | Independent copy (but has origin remote pointing to GitHub) |
Part of the same repository |
| When to use it | Contributing to a repo where you do not have write access (most open source) | Working locally with Git and VS Code | Creating an isolated workspace for a feature, fix, or experiment |
| How to contribute back | Open a pull request from your fork to the original (upstream) repo | Push your branch to the remote, then open a PR | Open a pull request from your branch to main |
| Workshop usage | Not required for the Learning Room (you have direct write access) | Optional in Block 0 (for local Git work in Ch11+) | Required from Chapter 6 onward (feature branches for every PR) |
In this workshop, you will primarily use branches (Chapter 6 onward) and optionally clone the Learning Room for local work (Chapter 11). Forking is the standard workflow when contributing to repositories where you are not a collaborator, which is covered in Contributing to Open Source.
Learning Cards: Fork vs. Clone vs. Branch
Screen reader users
- Fork: press
Bto find the "Fork" button on any repo page, thenEnter; the fork creation page opens with fields for owner and name - Clone: use the green "Code" button or run
gh repo clone owner/repoin VS Code's terminal (Ctrl+`) - Branch: you will create branches starting in Chapter 6; the branch selector (
Wshortcut in Focus Mode) lists all branches in the current repo
Low vision users
- The Fork button shows a count (e.g., "Fork 8") in the top-right of the repo page near Watch and Star
- After forking, your fork's URL changes to
github.com/your-username/repo-name; check the address bar to confirm you are on your fork - Branches are listed in the branch selector dropdown; the currently active branch is highlighted with your theme's selection color
Sighted users
- Fork, Watch, and Star buttons are grouped in the top-right corner of the repository page, right-aligned below the global nav
- A forked repo shows "forked from owner/repo" in small text just below the repository name
- Branches appear in the branch dropdown (click the branch name above the file tree); the default branch is usually labeled "main" or "master"
Watching, Starring, and Forking
These three actions let you follow, bookmark, or copy a repository.
Watching (subscribe to notifications)
Visual / mouse users
The Watch, Star, and Fork buttons are at the top-right of the repository page, just below the global navigation bar. Click Watch to open a dropdown of subscription options: Participating and @mentions, All Activity, or Ignore. Select your preference and click Apply.
Screen reader users
- Press
Lto navigate through list items to reach the Main landmark - Continue pressing
Luntil you find the Watch button (reads as “Watch this repository”) - Press
Enterto open the subscription submenu - Press
↑/↓to browse options: Participating, All Activity, Ignore, Custom - Press
Enterto confirm - If you choose Custom, a dialog opens with checkboxes for specific activity types (Issues, Pull requests, Releases, Discussions, Security alerts). Check the boxes you want and activate the Apply button.
Forking (create your own copy)
Visual / mouse users
Click the Fork button (top-right, next to Watch and Star). A page opens asking you to choose the owner and repository name for your fork. Fill in the details and click Create fork.
Screen reader users
- Press
Lto navigate list items in the Main landmark - Press
Ito navigate individual list items until you find “Fork your own copy” - Press
Enterto start the fork workflow - The fork creation page lets you choose the owner and repository name
- Tab to “Create fork” and press
Enter
Starring (bookmarking)
Visual / mouse users
Click the Star button (top-right). The button changes to Starred with a filled star icon to confirm. Click it again to unstar.
Screen reader users
- Press
Lto navigate list items in the Main landmark - Press
Ito navigate individual list items until you find “Star this repository” - Press
EnterorSpaceto star - The button text changes to “Unstar” on the next focus
Tip: If the Watch/Fork/Star area is not immediately found with
L, pressDto navigate to the Main landmark first, then useIto browse list items within that region.
Viewing a Single File
When you open a file from the files table, the page shows the rendered content (for Markdown files) or the raw code (for code files).
File page landmarks
D → "Repository navigation" - repo tab bar
D → "Repository header" - file breadcrumb path
D → "Main" - the file content area
D → "Repository files navigation" - contains: Raw, Blame, History buttons
Reading a Markdown file (like README.md)
The README renders with full heading structure. Use:
H- navigate headings within the READMET- find any tablesL- find listsK- navigate links
Reading a code file
Code files render as a table where each row is one line of code. Content is read line by line.
| Goal | Keys |
|---|---|
| Read the file content | ↓ to read line by line |
| Jump to a specific line | Open Raw view (R button), then use browser Ctrl+F |
| View in Focus Mode | NVDA+Space, then ↓ arrows through lines |
The file action buttons
Above the file content, there are buttons:
- Raw - view the file as plain text in a new page
- Blame - see which commit changed each line (see below)
- History - see the full commit history for this file
- Edit (pencil) - edit the file directly on GitHub (if you have write access or it's your fork)
How to reach these buttons
Press B from within the file area, OR use D to navigate to the "Repository files navigation" landmark.
Editing a file
Visual / mouse users
- Open the file you want to edit
- Click the pencil icon (Edit file) in the top-right of the file content area
- The file opens in a web editor - click in the content area and edit
- When done, scroll down to “Commit changes”, type a commit message, and click the green Commit changes button
- Choose “Commit directly to
main” (or your branch) and confirm
Screen reader users
- Open the file you want to edit
- Press
Kto navigate links until you find the “Edit file” link (may be labeled with a pencil icon description) - Press
Enterto activate the link - the page opens in edit mode with a code editor textarea - Switch to Focus Mode: press
NVDA+Space(NVDA) orInsert+Z(JAWS) - Make your changes using standard text editing keys
- When done, press
Escapeto exit the textarea - Press
Shift+Tabto navigate backwards to the “Commit Changes” button - Press
Enterto open the commit dialog - Type your commit message in the dialog, then Tab to the confirm button and press
Enter
Note: Switch back to Browse Mode after step 6 (
NVDA+Space) to useShift+Tabmore reliably to reach the commit button.
Learning Cards: Viewing a Single File
Screen reader users
- On a Markdown file, the rendered content has full heading structure; press
Hto navigate headings within the file,Tfor tables,Kfor links - On a code file, content reads as a table with one line per row; press
Down Arrowin Focus Mode to read line by line - The action buttons (Raw, Blame, History, Edit) are above the file content; press
Bor navigate to the "Repository files navigation" landmark withDto find them
Low vision users
- Markdown files render with styled headings and formatted text; code files render with syntax highlighting in a monospace font
- The Edit button (pencil icon) is in the top-right corner of the file content area; at high zoom it appears above the first line of the file
- Use the Raw button to view files as plain text in a new page, which can be easier to read at high zoom without the GitHub page chrome
Sighted users
- The file action buttons (Raw, Blame, History, pencil icon for Edit) are in a toolbar row above the file content
- Line numbers appear on the left side of code files; click a line number to highlight that line and generate a permalink URL
- The breadcrumb path above the file (e.g., "repo > docs > README.md") is clickable; each segment navigates to that folder level
The Blame View
Blame shows you who changed each line of a file, in what commit, and when. It is useful for tracing why a particular change was made.
Navigating Blame
- From a file page, activate the "Blame" button
- The page reloads in Blame view
- The content is a table: left column = commit info (who, when, message), right column = the line of code
T - jump to the blame table
Ctrl+Alt+→ - move from commit info column to code column
Ctrl+Alt+↓ - move to the next line
K - navigate the commit links (opens that commit's detail page)
Commit History
Two ways to view history:
- Repo-level history: On the Code tab, find the "commits" link near the top (it shows a number like "1,234 commits"). Press
Kand navigate links to find it. - File-level history: From any file page, activate the "History" button.
Reading the Commits List Page
H or 3 - navigate by date headings (commits are grouped by date)
I - navigate individual commit list items
K - navigate commit links (SHA hashes, short descriptions)
Enter - open a commit to see its diff
Reading a Commit Page
A commit page shows:
- The commit message (heading)
- Author and date
- Parent commit link
- A diff for every file changed
1 - go to commit message heading
H or 3 - navigate file headings in the diff
T - navigate to the stats table (files changed, lines added/deleted)
+ - skip table navigation and read file diffs by line
Searching for a File
The "Go to file" shortcut is extremely useful when you know what you are looking for.
How to use Go to File
- Make sure you are on the Code tab of a repository
- If hovercards are off, no navigation penalty - just navigate normally
- Find the search box: press
ForEto jump to the next edit field - look for one labeled "Go to file" or "Filter files by name" - Type the filename or partial path
- Results appear as a dropdown - use
↓to navigate,Enterto open
GitHub keyboard shortcut: T - opens the Go to File dialog.
Screen reader conflict warning: T normally means "next table" in NVDA/JAWS Browse Mode. GitHub's T shortcut conflicts with this. To use GitHub's T shortcut:
- Option 1: Switch to Focus Mode first (
Insert+Spacefor NVDA,Insert+Zfor JAWS) - Option 2: Use
Fkey to find the "Go to file" or "Find file" edit field instead - Recommended: Option 2 is more reliable and doesn't require mode switching.
Learning Cards: Searching for a File
Screen reader users
- Press
ForEin Browse Mode to jump to the "Go to file" search field; type a filename and results appear as a dropdown navigable withDown Arrow - The GitHub
Tshortcut also opens the file finder, but it conflicts with the "next table" key in Browse Mode; switch to Focus Mode first (NVDA+Space) or useFinstead - After selecting a result and pressing
Enter, the file page loads; press1to hear the file name, thenHto navigate its headings
Low vision users
- The "Go to file" button is near the top of the Code tab, above the file table; it opens a search overlay in the center of the screen
- Search results highlight matching characters in bold; at high zoom the overlay may cover part of the file table underneath
- Use browser
Ctrl+Fas a fallback to search for a filename visible in the file table without opening the overlay
Sighted users
- The "Go to file" button (or press
T) opens a search-as-you-type overlay showing matching file paths as you type - Results show the full file path with matching characters highlighted in bold; press
Enteron a result to open the file - Fuzzy matching works: typing "readme" matches "README.md" and "docs/readme.txt" and any other file with those characters in order
GitHub Shortcuts for Repository Navigation - Spotlight
These are the GitHub built-in shortcuts you will use most on repository pages. They work by sending keystrokes directly to GitHub's JavaScript, so enable Focus Mode first (NVDA: NVDA+Space, JAWS: Insert+Z).
| Shortcut | What it does | When you need it |
|---|---|---|
? |
Show all shortcuts for this page | Any time - get the full context-specific list |
G C |
Jump to the Code tab | You're on Issues or PRs and want the file tree |
G I |
Jump to the Issues tab | You're browsing code and spot a bug to report |
G P |
Jump to the Pull Requests tab | You want to review open PRs |
G A |
Jump to Actions / workflow runs | You want to check CI status |
G G |
Jump to Discussions | You want to participate in project conversations |
G W |
Jump to Wiki | You want to view the repository wiki |
How to use: Press G, release it, then press the second letter. For example: press G, release, press C (not G+C together).
| . or > | Open repository in github.dev (VS Code in browser) | You want to edit a file or read code with VS Code shortcuts |
| W | Switch branch or tag | You want to browse a different branch of the code |
| Y | Expand URL to permanent canonical link | You want a link that always points to this exact commit |
Press ? now on any GitHub repository page to see the live shortcut list for that specific context.
Screen reader tip - reading the shortcut dialog: When the
?dialog opens it is a modal overlay. PressNVDA+Space(NVDA) or ensure JAWS Virtual Cursor is active to browse the dialog content withHfor headings and↓to read each shortcut. The dialog is context-aware - the shortcuts listed change based on the page you are on. PressEscapeto close.
For the full shortcut system including issues, PRs, comments, and notifications, see Screen Reader Cheat Sheet - GitHub Shortcuts section.
The sidebar (on desktop-width windows) contains:
- About - the repo description and topics
- Releases - recent published releases
- Packages - Docker/npm packages attached to the repo
- Contributors - the top contributors
- Languages - the percentage breakdown of programming languages
Navigating the sidebar
The sidebar content is inside the "Main" landmark, after the files table and README. After the README, press H or 2 to reach "About" and the sidebar section headings.
VoiceOver: Navigate past the README section with VO+Right - the sidebar elements follow sequentially in the reading order.
The Repository About Section
Quick way to check the project description, website link, and topics:
- Press
Dto walk through landmarks - Look for a heading "About" in the sidebar
2orHto jump to that "About" heading- Then
↓to read the description, URL, and topics
Practical Scenarios
Scenario A: "I want to find out what this project does"
- Navigate to the repo URL
- Press
1- hear the repo name ↓- read the description (announced as a paragraph after the heading)- Navigate to README:
D→ "Repository files navigation" →Hwithin the README
Scenario B: "I want to find a good file to edit"
- Open the files table with
T - Navigate rows with
Ctrl+Alt+↓ - Move right with
Ctrl+Alt+→to read the commit message (what's been changing recently) - When found, press
Enteron the Name column to open the file
Scenario C: "I want to know who has been working on this file recently"
- Open the file
- Activate the "Blame" button (
Bfrom the Repository files navigation landmark) - Navigate the blame table to see authors
Scenario D: "I want to understand what changed in the last release"
- Navigate to the sidebar "Releases" section (
Hor2) - Activate the latest release link
- Read the release notes (rendered Markdown with headings and lists)
Scenario E: "I want to contribute - where do I start?"
- Navigate to the Code tab
- Look for
CONTRIBUTING.mdin the files table - Open it and read the contributing guidelines
- Then go to Issues tab and filter by
good first issue
If You Get Stuck
| Problem | What to do |
|---|---|
| Clone fails with "authentication required" | You need to sign in. See Appendix D for HTTPS authentication setup. |
| Cannot find the Code button for cloning | Press B to cycle buttons. The green "Code" button is above the file table. On narrow screens it may be hidden behind a "..." overflow menu. |
File finder (T shortcut) does not open |
Ensure you are in Focus Mode (NVDA: NVDA+Space). The T shortcut only works in the repository Code tab. |
| Forking creates a repo I did not expect | By default, forking copies only the default branch. Go to your fork's settings if you need to adjust. The original repo is untouched. |
G I or G P shortcuts do not work |
These require two separate key presses (G, release, then I or P), not simultaneous. Ensure Focus Mode is active first. |
| Everything else | Post a comment on your challenge issue describing what you tried. A facilitator or buddy will help. |
Try It: The Five-Tab Tour
Time: 3 minutes | What you need: Browser with screen reader, signed in to GitHub
Navigate to the Accessibility Agents repository and do this:
- Code tab - Press
Dto the "Repository navigation" landmark, thenKto find "Code". PressEnter. You're on the file list. - Issues tab - Press
GthenI(Focus Mode first:NVDA+Space). How many open issues are there? Press3to jump through issue titles. - Pull Requests tab - Press
GthenP. Are there any open PRs? - Find a file - Press
T(in Focus Mode) to open the file finder. TypeREADMEand pressEnter. You just navigated straight to a file without scrolling. - Read the README - Press
1to find the page title, then2to scan sections.
You're done. You just toured a real repository using only your keyboard.
What success feels like: You visited four tabs and opened a file without touching a mouse. Every repository on GitHub has this same layout - you now know how to navigate all of them.
Day 2 Amplifier - Accessibility Agents:
@daily-briefingNavigate every folder of accessibility-agents manually today before using any agent. Find
.github/agents/, open a.agent.mdfile, and read it - that file is how an agent knows what to do. You must understand the structure before you can evaluate whether an agent understood it correctly.Once you have mastered manual repository navigation:
- In VS Code -
@daily-briefing morning briefingsweeps every repository you have access to and delivers one prioritized document: open issues, PR status, CI results, security alerts, community reactions - all without opening a browser tab- In your repo - Fork accessibility-agents and the
.github/agents/folder travels with every clone; every collaborator on your fork has access to the same agents you do- In the cloud - GitHub Agentic Workflows can generate daily status reports on a schedule, running inside GitHub Actions and posting digests to a designated issue thread - no VS Code, no local setup required
An agent's output only makes sense when you already know what it is describing. You are building that knowledge right now.
Next Step: Move on to Chapter 04: The Learning Room to understand where we'll be practicing our new skills.
Next: Chapter 04: The Learning Room
Back: Chapter 02: Understanding GitHub
Related appendices: Appendix B: Screen Reader Cheat Sheet
Authoritative Sources
Use these official references when you need the current source of truth for facts in this chapter.
- GitHub Docs, home
- GitHub Changelog
- About Git
- GitHub flow
- About pull requests
- About issues
- Contributing to a project
Section-Level Source Map
Use this map to verify facts for each major section in this file.
- A Screen Reader Guide to GitHub Repositories: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Workshop Recommendation (Chapter 3): GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- What Is a Repository Page?: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Landing on a Repository - What to Expect: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Navigating the Repository Tabs: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- The Files Table: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- The Branch Selector: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Cloning a Repository: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Or with standard Git: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Fork vs. Clone vs. Branch - What Is the Difference?: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Watching, Starring, and Forking: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Viewing a Single File: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- The Blame View: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Commit History: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- Searching for a File: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests
- GitHub Shortcuts for Repository Navigation - Spotlight: GitHub Docs, home, GitHub Changelog, About Git, GitHub flow, About pull requests