SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
Understand Git and GitHub basics

Working with GitHub: Accounts, Plans, the GitHub Flow, Markdown, Desktop and Mobile (GitHub Foundations GH-900)

17 min readGH-900 · Understand Git and GitHub basicsUpdated

Working with GitHub means knowing which kind of account owns your work (a personal account, an organization or an enterprise), which plan unlocks which features, how a change moves through the GitHub flow from branch to merged pull request, how to write clear issues and pull requests in Markdown, and when GitHub Desktop or GitHub Mobile is the right tool. This lesson covers each of those skills from the GitHub Foundations (GH-900) exam guide, with the distinctions that matter when two options both sound reasonable: Pro versus Team, Enterprise Cloud versus Enterprise Server, a draft pull request versus a ready one, a #reference versus an @mention, and Desktop versus Mobile.

What you’ll learn
  • Describe personal, organization and enterprise accounts, who owns repositories in each, and why each person keeps one personal account
  • Choose between GitHub Free, Pro, Team and Enterprise based on who owns the repository and what features are needed
  • Compare GitHub Enterprise Cloud, Enterprise Cloud with data residency and Enterprise Server
  • Explain each step of the GitHub flow, including draft pull requests, follow-up commits, deleting branches and reverting a merged pull request
  • Use GitHub Markdown in issues and pull requests: code blocks, task lists, relative links, references, mentions, alerts, collapsed sections, diagrams and comments
  • Recognise when to use GitHub Desktop, GitHub Mobile or another tool such as GitHub CLI

GitHub account types: personal, organization and enterprise

GitHub has three types of account. A personal account (also called a user account) is the identity a person signs in with; an organization account is a shared account that owns repositories for a group; and an enterprise account sits above organizations so one company can manage policy and billing for many of them in one place.

Account typeWhat it isCan you sign in to it?Typical owner of
Personal (user) accountYour identity on GitHub. Every action, commit attribution and comment comes from a personal account.Yes, with your own username and credentialsYour own repositories, packages and projects
Organization accountA shared account where many people collaborate across many projects. Owners group members into teams and grant access per repository.No. Members act through their own personal accountsPublic and private repositories that belong to the group, not to any one member
Enterprise accountAvailable with GitHub Enterprise Cloud and GitHub Enterprise Server. Owns several organizations and centrally manages their policies and billing.No. Enterprise owners are personal accounts with an enterprise roleOrganizations

The key consequence of an organization is ownership that does not depend on one person. If a group's repositories live in one member's personal account, that person controls them and can leave with them; other people can only be added as collaborators to individual repositories. Moving the work into an organization means the organization owns it, several people can be owners, and access is managed through teams.

Nobody shares a login on GitHub. A shared "team login" or a shared machine user for people to work through defeats per-person accountability; machine users exist for automation, not for humans.

One personal account per person, and what organization membership means

GitHub recommends that each person keeps one personal account for everything they do on GitHub, open source and paid work alike, and it provides a way to merge extra personal accounts. Access to an employer's code comes from being added to the employer's organization, not from a separate work account.

This works because membership is something that can be granted and removed without touching the account itself:

  • Joining an employer: an organization owner invites your existing personal account; once you accept, you get access to whatever repositories your teams and roles allow.
  • Leaving an employer: an organization owner removes you. Your personal account, its repositories and your public contribution history stay as they are. You lose access to the organization's private repositories, and your private forks of those private repositories are removed too. Commits you already made stay in the organization's history.
  • Next job: the same personal account joins the new employer's organization.

Because access lives in membership, one personal account can belong to several organizations at once, and changing employers never needs a new account.

The exception: managed user accounts. Some enterprises use Enterprise Managed Users, where the company's identity provider creates and controls the accounts its people use for company work. Those accounts are separate from a person's own personal account by design. How they are configured belongs to the security and administration domain; for this topic, remember that the "one personal account" recommendation applies to ordinary organizations.

GitHub plans: Free and Pro for people, Free, Team and Enterprise for organizations

GitHub's plans split by account type: a personal account chooses between GitHub Free and GitHub Pro, while an organization chooses between GitHub Free for organizations, GitHub Team and GitHub Enterprise. The free plans give the full feature set on public repositories; the paid plans mostly add advanced tools for private repositories, and Enterprise adds identity, governance and deployment options.

PlanForWhat it adds
GitHub FreePersonal accountsUnlimited public repositories with the full feature set; unlimited private repositories with a limited feature set
GitHub ProPersonal accountsAdvanced tools for the person's private repositories: protected branches, required and multiple reviewers, code owners, wikis and GitHub Pages, plus more included Actions minutes and email support
GitHub Free for organizationsOrganizationsShared ownership, unlimited public repositories with the full feature set, unlimited collaborators and team access controls; private repositories have the limited feature set
GitHub TeamOrganizationsThe advanced private-repository tools (protected branches, required reviewers, code owners and so on) for an organization, billed per user
GitHub EnterpriseOrganizations, grouped under an enterprise accountEverything in Team plus security, compliance and deployment controls: SAML single sign-on, user provisioning with SCIM, internal repositories, enterprise-wide policies and the choice of Enterprise Cloud or Enterprise Server

Features follow the repository owner's plan

A repository gets the features of the plan of the account that owns it. Two decisions follow directly:

  • A private repository owned by a personal account gets the advanced tools when that personal account is on Pro. Team and Enterprise are organization plans and do not apply to personal accounts.
  • A private repository owned by an organization gets the organization's plan; the plans of individual members' personal accounts do not carry over to it. Among organization plans, Team is the lower-cost one that adds required reviewers, protected branches and code owners; Enterprise is the step up when the needs include SAML SSO, SCIM provisioning, internal repositories or managing many organizations together.

Because public repositories already have the full feature set on every plan, the paid plans matter mainly for private work; GitHub Free for organizations still provides shared ownership and teams. Prices, minute allowances and storage quotas change over time, so learn what each plan is for rather than its numbers.

GitHub Enterprise options: Enterprise Cloud, data residency and Enterprise Server

GitHub Enterprise comes in two deployment options: GitHub Enterprise Cloud, which GitHub hosts, and GitHub Enterprise Server, which the customer installs and runs on its own infrastructure. Enterprise Cloud can also be bought with data residency, which stores the company's code and data in a chosen region on its own subdomain of GHE.com.

OptionWho runs itWhere the data livesFits when
Enterprise Cloud (on GitHub.com)GitHubGitHub.comThe company wants enterprise controls without running servers and has no data-location requirement
Enterprise Cloud with data residencyGitHubA chosen region, on a unique subdomain of GHE.comData must be stored in a specific region (for example the EU) while GitHub still operates the service
Enterprise ServerThe customer's own IT teamThe customer's data center or private cloudPolicy requires the platform to run on infrastructure the company controls

Both Enterprise Cloud and Enterprise Server use an enterprise account to manage several organizations together. The organizations keep their own repositories, members and teams, while enterprise owners apply policies and billing across all of them from one place: it is the layer GitHub designed for managing many organizations as a group.

Two names that sound related do different jobs. GitHub Connect links an Enterprise Server instance to an Enterprise Cloud account so they can share selected features and data, such as license usage. Self-hosted runners are machines you provide to run GitHub Actions jobs; they decide where workflow jobs execute, not where GitHub itself is hosted.

The GitHub flow, step by step

The GitHub flow is GitHub's lightweight, branch-based workflow for collaborating: you make every change on a branch, propose it with a pull request, get it reviewed, merge it into the default branch and delete the branch. The default branch stays deployable because nothing reaches it without a pull request.

  1. Create a branch from the default branch, with a short, descriptive name (for example increase-test-timeout or add-code-of-conduct), so collaborators can see what is in progress. People with write access branch in the repository itself; people without write access fork it first and branch in the fork.
  2. Make changes: commit to the branch and push it to GitHub. Each commit should be an isolated, complete change with a descriptive message, so it is easy to review or revert.
  3. Create a pull request asking collaborators to review the branch. Describe what changed and why, and link related issues.
  4. Address review comments. Reviewers comment on the pull request or on specific lines; you respond by pushing more commits to the same branch, and the pull request updates automatically.
  5. Merge the pull request once it is approved (and any required checks and branch protection rules pass). This brings the branch's changes into the default branch.
  6. Delete the branch. Its commits are now in the default branch, so deleting it loses nothing and signals that the work is done. A deleted branch can be restored from the pull request page if it is needed again.

The order matters: review happens before merge. A sequence that merges first and reviews afterwards, or that commits to the default branch and only then creates a branch, is not the GitHub flow. Opening a pull request before any branch or commit exists is not the starting point either: the flow starts with a branch.

Branch practice, draft pull requests, and undoing a merged change

Good GitHub flow habits keep each pull request small, focused and easy to review: one branch per unrelated change, draft pull requests for early feedback, follow-up commits for review fixes, and a revert pull request when a merged change must be undone.

Separate branches for unrelated changes

Each unrelated change gets its own branch, created from the default branch, and its own pull request. A pull request should do one thing: reviewers can then judge it on its own, and it can merge as soon as it is ready without waiting for, or depending on, other unfinished work.

Draft pull requests for early feedback

When you want comments and checks on unfinished work, open a draft pull request. It has the full pull request experience (conversation, line comments, status checks) but cannot be merged until you mark it ready for review. That block is enforced by GitHub itself, so it does not rely on everyone noticing a convention. Draft pull requests are available on public repositories on every plan; on private repositories they depend on the owner's plan (for example GitHub Team or Enterprise).

Updating a pull request

To act on review feedback, commit the fixes and push them to the branch the pull request already uses. The pull request picks up the new commits automatically, so the code, the comments and the checks stay together in one review history.

Undoing a merged pull request

To undo a merged pull request, use Revert on it. GitHub creates a new pull request containing a revert commit, which is reviewed and merged like any other change. The principle is to undo by adding history, never by rewriting it: rewriting a shared branch bypasses review and breaks the copies other people have already pulled.

Markdown basics for issues and pull requests

GitHub Flavored Markdown is the plain-text formatting syntax GitHub renders in issues, pull requests, comments, discussions, wikis and .md files; it lets you write clear, structured descriptions with headings, lists, code, links, images and checklists without leaving the text box.

You wantWriteNotes
Headings# Title, ## SectionTwo or more headings give a file an automatic outline
Bold, italic, strikethrough**bold**, _italic_, ~~struck~~
Inline code`npm test`Single backticks, for a word or short command in a sentence
Code block with highlightingA line of ```python, the code, then a line of ```Keeps line breaks; the language identifier after the opening fence turns on syntax highlighting
Quote> quoted textFor quoting someone else's words, such as an earlier comment
Link[text](url)
Image![alt text](path)Same as a link with a leading !; without it you get a text link, not an image
Task list- [ ] open task, - [x] done taskRenders clickable checkboxes; a task list in an issue body shows its progress in places such as the issue list
TablePipes and a header separator row of hyphens

Relative links and images

For files inside the repository, GitHub recommends relative links such as ![Flow](docs/flow.png) rather than absolute URLs. A relative path is resolved against the branch or fork being viewed, so each branch shows its own copy of the file; an absolute URL that names one branch keeps showing that branch's version everywhere. A path that starts with / is resolved from the repository root.

Pick the syntax by what the reader needs: inline code for a word, a fenced block for anything that spans lines, and a quote only for prose you are quoting.

References and @mentions: linking issues and notifying people

GitHub turns short references into links: #number links an issue or pull request in the same repository, owner/repo#number links one in another repository, and @username or @organization/team-name mentions a person or a team so they are notified.

SyntaxWhat it references
#42Issue or pull request 42 in the same repository, rendered as a link to it. Typing # offers suggestions by number or title.
acme/api#118Issue or pull request 118 in a different repository (owner/repository#number)
acme/api@a5c3785A commit in another repository, by SHA (owner/repository@SHA); a bare SHA links a commit in the same repository
@samMentions a single user
@acme/docsMentions a team (@organization/team-name) and notifies its members

The rule of thumb: # is for issues and pull requests, @ on its own is for people and teams, and @ after a repository name is followed by a commit SHA.

Who actually gets notified

A mention notifies someone only if they have read access to the repository and, when an organization owns the repository, are a member of that organization. This stops private content leaking through notifications, while everyone who can already read the repository, public or private, is notified normally. A team mention notifies the team's members on the same terms.

Advanced formatting: alerts, collapsed sections, diagrams, footnotes and hidden comments

Beyond the basics, GitHub Markdown supports alerts for callouts, collapsed sections for long content, Mermaid diagrams drawn from text, footnotes, and HTML comments that are kept in the source but never rendered.

FeatureSyntaxUse it for
AlertsA blockquote whose first line is > [!NOTE], [!TIP], [!IMPORTANT], [!WARNING] or [!CAUTION]Callouts with a distinctive colour and icon, such as a breaking-change warning in a README. Bold text or a heading only changes typography
Collapsed section<details> with a <summary> label inside; add open to start expandedLong logs or optional detail that readers expand only when they need it
DiagramA fenced code block whose language identifier is mermaidFlowcharts and sequence diagrams that GitHub draws and anyone can update by editing text. GitHub also renders GeoJSON, TopoJSON and ASCII STL blocks
Footnote[^1] in the text and [^1]: note belowReferences and side notes; the note is still displayed at the bottom
HTML comment<!-- guidance -->Notes for whoever edits the text, such as instructions in issue and pull request templates; never rendered for readers

The near-twins to keep apart: a collapsed section hides until clicked but is still part of the rendered issue, an HTML comment is never shown to readers, and a footnote or code block always shows its content. Because a Mermaid diagram is text, changing it is an ordinary edit that shows up in the diff.

GitHub Desktop vs GitHub Mobile (and when neither fits)

GitHub Desktop is a free, open source graphical app for Windows and macOS that does everyday local Git work without typing commands; GitHub Mobile is the Android and iOS app for staying on top of GitHub away from your computer. Desktop works with repositories on your machine; Mobile works with GitHub itself.

GitHub DesktopGitHub Mobile
PlatformsWindows and macOS (no officially supported Linux build)Android and iOS
Made forPeople who prefer a GUI to the Git command line, including people new to GitTriage and review on the go
Typical tasksClone repositories, create and switch branches, see diffs, choose which changed lines go into a commit, add co-authors to a commit, commit, push and pull, start a pull requestManage and triage notifications (with push notifications), read, comment on and review issues and pull requests, edit files in a pull request, search code within a repository, verify sign-in attempts from new devices, ask Copilot Chat
Not forTriaging your GitHub notifications inbox or approving sign-in attempts (it does show desktop notifications about your own pull requests in the selected repository, such as failed checks or new reviews)Cloning and committing local work, or executing GitHub Actions jobs on the phone

GitHub Mobile with GitHub Enterprise Server

GitHub Mobile can connect to a GitHub Enterprise Server instance only when an enterprise owner enables mobile support for the enterprise (and the instance runs a supported version).

When neither fits: GitHub CLI and the browser

Recognising when to use Desktop or Mobile includes recognising when not to. Scripting and unattended automation need a command-line tool: GitHub CLI (gh) exposes pull requests, issues, labels and more as commands that run in scripts and CI jobs. Quick edits in the browser can use the github.dev editor, and a full cloud development environment is GitHub Codespaces; both are covered in their own lessons.

Tip. Questions are short practical scenarios: a group that needs shared ownership, a developer changing jobs, a team that needs a feature on private repositories, a company with a data-location or self-hosting rule, a step in the middle of a change, a piece of text to format in an issue, or a person who needs a tool for a situation. The options are usually near-twins that each exist on GitHub, so you need to know exactly what each one is for: personal versus organization plans, Team versus Enterprise, Enterprise Cloud versus Server versus data residency, a draft pull request versus other ways of flagging unfinished work, revert versus force-push, #number versus owner/repo#number versus @mentions, collapsed sections versus HTML comments, and Desktop versus Mobile versus CLI. Watch for the stated constraint (must stay private, lowest cost, no servers to run, without rewriting history, phone only) that rules out an otherwise workable choice. Some items ask you to select two.

Key takeaways
  • Personal accounts are people; organizations are shared owners that nobody signs in to; enterprise accounts (Enterprise Cloud and Server) manage policy and billing for many organizations.
  • GitHub recommends one personal account per person. Employer access comes from organization membership; removal ends access to the organization's private repositories (and deletes private forks of them) but leaves your account and repositories alone.
  • Features follow the repository owner's plan: Pro upgrades a personal account's private repositories, Team upgrades an organization's, and Enterprise adds SAML SSO, SCIM, internal repositories and the enterprise account.
  • Enterprise Cloud is hosted by GitHub (optionally with data residency on GHE.com); Enterprise Server runs on the customer's own infrastructure.
  • GitHub flow: branch from the default branch, commit and push, open a pull request, address review comments with more commits, merge, delete the branch.
  • Draft pull requests get feedback and checks but GitHub blocks merging until they are marked ready. Revert a merged pull request through a new pull request instead of rewriting history.
  • Markdown essentials: fenced code blocks with a language identifier, - [ ] task lists, ![alt](path) images with relative paths, #42 and owner/repo#42 references, @user and @org/team mentions.
  • A mention notifies only people with read access to the repository (and organization membership for organization-owned repositories).
  • Alerts ([!NOTE] to [!CAUTION]) highlight, <details> hides until clicked, Mermaid draws diagrams from text, and HTML comments never render.
  • GitHub Desktop is a GUI for local Git work on Windows and macOS; GitHub Mobile is for notifications, reviews and sign-in approvals on a phone; scripts use GitHub CLI.

Frequently asked questions

What is the difference between a GitHub personal account and an organization?

A personal account is an individual's identity on GitHub: you sign in with it and every action comes from it. An organization is a shared account that owns repositories for a group, such as a company or open source project. Nobody signs in to an organization; members use their own personal accounts, and owners manage access through teams, so ownership does not depend on any one person.

Should I create a separate GitHub account for work?

GitHub recommends one personal account per person for both personal and work use. Your employer adds that account to its organization, which gives you access to its repositories, and removes it when you leave. The exception is a company using Enterprise Managed Users, where the company's identity provider creates a separate managed account for company work.

What is the difference between GitHub Pro and GitHub Team?

GitHub Pro is a plan for a personal account, and GitHub Team is a plan for an organization. Both add advanced tools for private repositories, such as protected branches, required reviewers and code owners. Which one you need depends on who owns the repository: a repository in your personal account needs Pro, and a repository owned by an organization needs the organization to be on Team or Enterprise.

What is the difference between GitHub Enterprise Cloud and GitHub Enterprise Server?

GitHub Enterprise Cloud is hosted by GitHub, optionally with data residency in a chosen region on a GHE.com subdomain. GitHub Enterprise Server is installed and run by the customer on its own infrastructure, such as its own data center. Both offer enterprise accounts that manage policy and billing for several organizations.

What are the steps of the GitHub flow?

The GitHub flow has six steps: create a branch from the default branch, make changes by committing and pushing to the branch, open a pull request, address review comments by pushing more commits, merge the pull request once it is approved, and delete the branch. Review always happens before the change reaches the default branch.

How do I undo a merged pull request on GitHub?

Use the Revert button on the merged pull request. GitHub creates a new pull request with a commit that reverses the changes, which you review and merge like any other change. This keeps the default branch's history intact, unlike resetting the branch and force-pushing.

Why didn't someone get notified when I @mentioned them?

GitHub only notifies a mentioned person if they have read access to the repository and, for a repository owned by an organization, are a member of that organization. Someone without access to a private repository therefore gets no notification. To notify a whole team, use the @organization/team-name form.

When should I use GitHub Desktop instead of GitHub Mobile?

Use GitHub Desktop, a free app for Windows and macOS, for local Git work through a graphical interface: cloning, branching, choosing lines to commit, committing and pushing. Use GitHub Mobile, for Android and iOS, to triage notifications, review issues and pull requests, edit files in a pull request and approve sign-in attempts while away from your computer. For scripts and automation, use GitHub CLI.

Source

This lesson covers the "Understand Git and GitHub basics" domain of the official GH-900 exam guide. Vendors revise their guides — check the source for the current version.

Test yourself on this topic
Practice now

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.

Spotted a mistake in this lesson?