GH-900 — GitHub Foundations (GH-900) Exam Quick Reference

Compact GitHub Foundations (GH-900) reference for Git, repositories, pull requests, collaboration, Actions, security, and GitHub platform basics.

Exam Focus

This independent Quick Reference supports candidates preparing for GitHub Foundations (GH-900), exam code GH-900, from GitHub. Use it to review the platform vocabulary, Git workflows, collaboration features, automation basics, and security/governance decisions that commonly appear in foundation-level GitHub scenarios.

High-yield expectation: be able to choose the right GitHub feature for a collaboration, automation, repository management, or security scenario.

Core Mental Model

ConceptWhat it meansExam cue
GitDistributed version control systemLocal commits, branches, history, merge, rebase
GitHubCloud platform built around Git repositoriesCollaboration, pull requests, issues, Actions, security, organizations
RepositoryProject storage containing files, history, branches, issues, PRs, settings“Where code and project history live”
Working treeYour current local filesFiles edited but not necessarily committed
Staging area / indexPrepared changes for the next commitgit add places changes here
CommitSnapshot of staged changes with metadataLocal history point; not automatically on GitHub
BranchMovable line of developmentIsolate work without changing the default branch
RemoteNamed reference to a hosted repository, often originUsed by fetch, pull, and push
CloneLocal copy of a remote repositoryWork locally with full history
ForkYour own server-side copy of another repositoryContribute without direct write access
Pull requestProposed change set plus review discussionReview, checks, approval, merge
IssueTrack task, bug, enhancement, or discussion itemWork planning, not code review

Git vs. GitHub: Fast Distinctions

Do not confuseCorrect distinction
Git and GitHubGit is the version control tool; GitHub is a collaboration platform that hosts Git repositories.
Commit and pushCommit records local history; push uploads commits to a remote repository.
Fetch and pullFetch downloads remote updates; pull fetches and integrates them into the current branch.
Branch and forkBranch is a line of work in a repo; fork is a copy of a repo under another account.
Clone and forkClone creates a local copy; fork creates a GitHub-hosted copy.
Pull request and issuePR proposes code changes; issue tracks work, bugs, or ideas.
Release and tagTag marks a Git point; release adds GitHub release notes/assets around a tag.
Watch and starWatch controls notifications; star bookmarks or signals interest.
Project and repositoryRepository stores code/history; Project tracks work items across repos.

Git Command Quick Sheet

Daily Workflow Commands

TaskCommandNotes
Create a new Git repositorygit initInitializes .git in the current directory.
Copy a remote repository locallygit clone <url>Creates local repo and configures origin.
Check current stategit statusShows branch, staged changes, unstaged changes, untracked files.
View historygit logUse --oneline --graph --decorate for compact history.
See file changesgit diffUnstaged changes by default.
Stage filesgit add <file>Adds selected changes to next commit.
Stage all tracked/untracked changesgit add .Be careful not to stage secrets or generated files.
Commit staged changesgit commit -m "message"Creates local snapshot.
List branchesgit branchShows local branches.
Create branchgit branch <name>Does not switch to it.
Switch branchgit switch <name>Modern command for changing branches.
Create and switch branchgit switch -c <name>Common feature-work command.
Add remotegit remote add origin <url>Links local repo to hosted repo.
View remotesgit remote -vShows fetch/push URLs.
Download remote updatesgit fetchSafe; does not modify current branch content.
Download and integrategit pullFetch plus merge/rebase, depending on configuration.
Upload commitsgit pushSends local commits to remote branch.
Push new branchgit push -u origin <branch>Sets upstream tracking.

Safe Undo and History Commands

ScenarioPreferWhy
Unstage a filegit restore --staged <file>Keeps working tree changes.
Discard local file changesgit restore <file>Reverts file to last committed state.
Undo a public/shared commitgit revert <commit>Creates a new commit that reverses changes.
Edit most recent local commitgit commit --amendGood before pushing; avoid rewriting shared history.
Temporarily shelve workgit stashUseful before switching branches or pulling.
Reset branch pointergit resetPowerful; can rewrite history or discard work.
Force update remote branchgit push --force-with-leaseSafer than plain force push, but still risky.

Exam trap: revert is usually safer for shared history because it preserves history. reset --hard can discard local changes and rewrite branch state.

GitHub Repository Reference

Repository Visibility

VisibilityWho can see itCommon exam cue
PublicAnyone can viewOpen source, public docs, public examples
PrivateOnly explicitly granted users/teamsRestricted project or confidential source
InternalMembers of an enterprise context, where availableShare across an enterprise without making public

Common Repository Files

File / pathPurpose
README.mdProject overview, usage, setup, status
LICENSETerms under which others may use the project
.gitignoreFiles Git should not track, such as build output or local config
CONTRIBUTING.mdContribution expectations and process
CODE_OF_CONDUCT.mdCommunity behavior expectations
SECURITY.mdVulnerability reporting and supported versions guidance
SUPPORT.mdHow users should request help
CODEOWNERSAutomatically requests reviews from responsible owners
.github/ISSUE_TEMPLATE/Standardizes issue creation
.github/PULL_REQUEST_TEMPLATE.mdStandardizes PR descriptions
.github/workflows/GitHub Actions workflow files

GitHub Flow

GitHub Flow is a lightweight branch-and-pull-request model.

    flowchart LR
	    A[Create branch] --> B[Make commits]
	    B --> C[Push branch]
	    C --> D[Open pull request]
	    D --> E[Discuss and review]
	    E --> F[Run checks]
	    F --> G{Ready?}
	    G -- No --> B
	    G -- Yes --> H[Merge]
	    H --> I[Deploy or release]
StepPurposeCommon cue
Create branchIsolate work from default branchFeature, bug fix, experiment
Commit changesRecord small logical snapshotsClear commit messages matter
Open PRStart review and collaborationCompare branch into base branch
ReviewComment, request changes, approveQuality and knowledge sharing
Run checksValidate with CI, tests, scansStatus checks before merge
MergeIntegrate approved changesMethod depends on repository settings

Pull Request Essentials

PR conceptMeaningExam trap
Base branchTarget branch that receives changesOften main, but not always
Compare/head branchSource branch containing proposed changesThis is the branch being merged
Draft PRPR not ready for final reviewGood for early feedback
Review commentFeedback on code or PRNot the same as approval
ApproveReviewer accepts the changeMay still require checks to pass
Request changesReviewer blocks until changes are madeUsually requires updates before merge
Status checkCI or external validation resultCan be required by branch protection
Linked issueIssue connected to a PRClosing keywords can close issues on merge
Merge conflictGit cannot automatically combine changesMust be resolved before merge

Merge Method Selection

MethodWhat it doesChoose when
Merge commitCreates a merge commit preserving branch historyYou want full branch context and non-linear history is acceptable
Squash mergeCombines PR commits into one commit on the base branchYou want a clean main history per PR
Rebase mergeReplays commits onto the base branchYou want linear history while preserving individual commits

Branch, Fork, Clone, and Template Decisions

NeedChooseWhy
Work locally on an existing repositoryCloneCreates a local working copy with Git history.
Make a change in a repo where you have write accessBranchKeeps work isolated inside the same repository.
Propose a change without write accessFork plus PRYour fork holds your branch; PR proposes changes upstream.
Start a new project from an existing structureTemplate repositoryCopies files without treating the new repo as the same project history.
Preserve relationship to original projectForkMaintains upstream contribution model.
Share unmerged work for reviewPush branch and open PRLets GitHub show diffs, reviews, and checks.

Feature Selection Matrix

ScenarioGitHub feature to chooseWhy
Track a bug, task, or enhancementIssuesLightweight work item tracking.
Propose and review code changesPull requestsReview, comments, checks, merge workflow.
Organize work across issues and PRsProjectsBoards/tables/roadmaps with fields and views.
Group work for a release or timeboxMilestonesTracks progress across linked issues/PRs.
Categorize issues or PRsLabelsFiltering and triage.
Assign responsibilityAssigneesIdentifies who owns the work item.
Ask open-ended questions or run community conversationsDiscussionsBetter than issues for Q&A and non-task conversations.
Automate builds, tests, or deploymentsGitHub ActionsEvent-driven workflows.
Store workflow secretsGitHub Actions secretsPrevents hard-coding sensitive values.
Store non-sensitive workflow configVariablesReusable configuration without treating it as a secret.
Create cloud development environmentsCodespacesReproducible browser/VS Code development environment.
Publish versioned software deliverablesReleasesRelease notes and downloadable assets around a tag.
Publish packages or containersGitHub PackagesPackage registry integration.
Host a static website or documentationGitHub PagesStatic site hosting from repository content.
Automatically request reviews from ownersCODEOWNERSMaps paths to responsible reviewers.
Enforce merge rulesBranch protection or repository rulesetsRequires reviews, checks, or other policies.
Find vulnerabilities in dependenciesDependabot alertsUses dependency graph information.
Propose dependency updatesDependabot updatesOpens PRs for version updates.
Detect committed secretsSecret scanningAlerts on exposed credentials/tokens.
Detect code vulnerabilitiesCode scanningStatic analysis results in GitHub security views.
Report or coordinate vulnerability disclosureSecurity advisoriesPrivate coordination and disclosure workflow.
Search code and metadataGitHub searchUses qualifiers such as repo:, org:, language:.

Issues, Projects, Discussions, and Planning

FeatureBest forNot best for
IssuesActionable tasks, bugs, enhancementsLong-running open-ended community chat
DiscussionsQ&A, announcements, ideas, community conversationTracking assigned engineering work
ProjectsVisualizing and prioritizing work across itemsStoring source code
MilestonesTracking progress toward a release or goalGeneral categorization
LabelsCategorizing and filteringOwnership or scheduling by themselves
AssigneesShowing who is responsibleCategorization
Templates/formsStandardizing issue or PR inputReplacing triage judgment

High-yield links between planning and code:

  • A PR can be linked to an issue.
  • Closing keywords in a merged PR can close linked issues.
  • Labels help filtering; they do not grant access.
  • Milestones show progress; they do not enforce deadlines.
  • Projects can include issues, PRs, draft items, and custom fields.

GitHub Actions Quick Reference

Workflow Anatomy

TermMeaning
WorkflowAutomated process defined in YAML under .github/workflows/.
EventTrigger such as push, pull request, scheduled run, or manual dispatch.
JobGroup of steps that runs on a runner.
StepIndividual command or action in a job.
ActionReusable unit of automation.
RunnerMachine that executes workflow jobs.
GitHub-hosted runnerRunner managed by GitHub.
Self-hosted runnerRunner you manage in your own environment.
ArtifactFile produced by a workflow for later download/use.
CacheReused dependencies/build outputs to speed later runs.
EnvironmentDeployment target with optional protection and secrets.
SecretEncrypted sensitive value used by workflows.
GITHUB_TOKENAutomatically available token for workflow authentication, with permissions controlled by configuration.

Minimal CI Workflow

name: CI

on:
  pull_request:
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm test

Actions Decision Cues

NeedUse
Run tests on every PRon: pull_request
Run workflow after commits to default branchon: push with branch filter
Manually start workflowworkflow_dispatch
Reuse automation from marketplace or another repouses: action reference
Run shell commandrun:
Test multiple versions/platformsMatrix strategy
Protect deployment targetEnvironments with reviewers/rules
Avoid exposing credentialsSecrets, restricted token permissions, least privilege

Exam trap: GitHub Actions workflow files live in .github/workflows/. A workflow is triggered by events; jobs run on runners; steps run commands or actions.

Identity, Access, and Governance

Account and Organization Model

EntityPurpose
Personal accountIdentity for an individual GitHub user.
OrganizationShared account for teams, repositories, permissions, and collaboration.
TeamGroup of organization members used to manage access and review ownership.
Enterprise accountHigher-level structure for managing multiple organizations and policies.
Outside collaboratorUser with access to specific repositories but not full organization membership.

Repository Permission Roles

RoleGeneral capability
ReadView and clone repository content.
TriageManage issues and pull requests without write access to code.
WritePush code and manage most collaboration activities.
MaintainManage repository without full access to sensitive/admin settings.
AdminFull repository administration.

Access Control Cues

RequirementUse
Give a group access to many repositoriesOrganization team
Grant limited repo-only access to an external personOutside collaborator
Restrict direct pushes to important branchesBranch protection or rulesets
Require successful CI before mergingRequired status checks
Require human review before mergingRequired pull request reviews
Require specific path owners to reviewCODEOWNERS
Centralize policies across organizationsEnterprise-level governance, where applicable
Investigate administrative activityAudit log, where available

Authentication and Credential Safety

Method / conceptUseWatch for
Browser sign-inInteractive GitHub useProtect with strong authentication.
Two-factor authenticationAdds a second verification factorImportant account security control.
SSH keyAuthenticate Git operations over SSHProtect private key.
HTTPS with tokenAuthenticate Git operations over HTTPSPasswords are not the normal Git auth method for GitHub operations.
Personal access tokenScript/API/Git authentication with scoped accessScope narrowly and rotate/revoke when needed.
Fine-grained tokenMore targeted token permissionsPrefer least privilege when supported by the scenario.
GitHub AppIntegration with scoped, installable permissionsOften preferred for app-to-GitHub automation.
OAuth AppUser-authorized app accessActs based on user authorization.
SecretEncrypted sensitive workflow valueDo not print secrets in logs or commit them.

Credential handling rules to remember:

  • Never commit passwords, API keys, private keys, or cloud credentials.
  • Use .gitignore to keep local config and generated secrets out of Git.
  • If a secret is committed, assume it is exposed: revoke, rotate, and remove it from history if needed.
  • Store CI/CD credentials as GitHub Actions secrets or environment secrets.
  • Give tokens only the permissions required for the task.

Security Features

FeatureDetects / managesTypical scenario
Dependency graphProject dependenciesFoundation for dependency security features.
Dependabot alertsKnown vulnerable dependencies“Notify me when a dependency has a vulnerability.”
Dependabot updatesDependency version update PRs“Keep dependencies current automatically.”
Code scanningPotential vulnerabilities in codeStatic analysis and security findings.
Secret scanningSecrets committed to repositoriesPrevent credential exposure.
Security advisoriesVulnerability coordination and disclosurePrivately coordinate a fix before public disclosure.
Branch protection / rulesetsRisky changes to important branchesRequire review, checks, signed commits, or other rules.
CODEOWNERSRequired or suggested reviewers by pathEnsure knowledgeable review.

High-yield distinction:

NeedChoose
Vulnerable dependency notificationDependabot alerts
Automated dependency PRsDependabot updates
Secret accidentally committedSecret scanning plus credential rotation
Static code security analysisCode scanning
Prevent unreviewed change to default branchBranch protection or rulesets

Markdown and GitHub-Flavored Markdown

NeedSyntax
Heading## Section
Bold**text**
Italic*text*
Link[label](https://example.com)
Image![alt text](image.png)
Inline code`code`
Fenced code blockTriple backticks before and after code
Unordered list- item
Ordered list1. item
Task list- [ ] task and - [x] done
Blockquote> quoted text
TablePipes and header separators
Mention user/team@username or @org/team
Reference issue/PR#123
Close issue from PRFixes #123, Closes #123, or similar closing keyword

Markdown commonly appears in:

  • README.md
  • Issues and pull requests
  • Discussions
  • Wikis
  • Release notes
  • Comments and reviews

Search, Notifications, and Repository Signals

Search Qualifiers

QualifierExampleUse
repo:repo:owner/name testSearch within a repository.
org:org:example topicSearch within an organization.
user:user:octocatSearch user-owned content.
language:language:pythonFilter by programming language.
path:path:docsFilter by path.
filename:filename:README.mdFind specific filenames.
is:issueis:issue is:openSearch issues.
is:pris:pr is:closedSearch pull requests.
label:label:bugFilter by label.
assignee:assignee:@meFind assigned work.
author:author:usernameFind items by creator.

Repository Social and Notification Features

FeatureMeaning
WatchSubscribe to repository notifications.
StarBookmark or show interest in a repository.
ForkCreate your own copy of a repository.
FollowSubscribe to a user’s public activity.
MentionNotify a user or team using @.
Review requestAsk a person or team to review a PR.
Notification inboxCentral place to manage GitHub notifications.

GitHub Pages, Releases, Packages, and Codespaces

FeaturePrimary purposeChoose when
GitHub PagesStatic website hostingPublish docs, portfolio, project site, simple static content.
ReleasesVersioned distributionPublish release notes, source snapshots, binaries/assets.
TagsGit references to specific commitsMark versions or important points in history.
GitHub PackagesPackage hostingPublish packages/containers tied to GitHub workflows and permissions.
CodespacesCloud development environmentNeed consistent dev setup without local machine configuration.
Dev container configDefines Codespaces/container environmentNeed reproducible tools, extensions, dependencies.

Common Exam Traps

TrapCorrect answer pattern
“I committed, so the code is on GitHub.”Not until you push to a remote.
“I pushed, so it is merged.”Push updates a branch; merge integrates into the target branch.
“A PR is only for code review.”PRs also host discussion, checks, linked issues, and merge decisions.
“Use an issue for every conversation.”Use Discussions for open-ended Q&A or community conversations.
“Use a fork when I have write access and just need a feature branch.”Use a branch in the same repo when appropriate.
“Use reset to undo public commits.”Prefer revert for shared history.
“Labels control permissions.”Labels categorize; permissions come from roles, teams, and policies.
“Projects store source code.”Repositories store code; Projects organize work.
“Secrets belong in workflow YAML.”Store sensitive values in secrets, not in repository files.
“Dependabot, code scanning, and secret scanning do the same thing.”They address dependencies, code analysis, and credential exposure respectively.
“GitHub Actions job equals workflow.”Workflow contains one or more jobs; jobs contain steps.
“A release and a tag are identical.”A release is GitHub metadata/assets around a tag.

Last-Minute Decision Checklist

Before answering a GH-900 scenario question, identify the target:

  1. Version control action? Think Git commands: commit, branch, merge, fetch, pull, push, revert.
  2. Code collaboration? Think pull request, review, checks, branch protection, CODEOWNERS.
  3. Work tracking? Think issues, labels, assignees, milestones, Projects.
  4. Community conversation? Think Discussions, not Issues.
  5. Automation? Think GitHub Actions: workflow, event, job, step, runner, secret.
  6. Security finding? Match the tool: Dependabot, code scanning, secret scanning, security advisory.
  7. Access control? Think organization, team, role, outside collaborator, repository visibility.
  8. Publishing? Think Pages for static sites, Releases for versions/assets, Packages for package artifacts.
  9. Cloud development environment? Think Codespaces and dev containers.
  10. Policy enforcement? Think branch protection, rulesets, required reviews, required checks.

Next Step

Turn the feature-selection tables into flashcards, then practice mixed GH-900 scenarios where you must choose the right GitHub feature, Git command, or collaboration workflow from similar-looking options.

Browse Certification Practice Tests by Exam Family