Saturday, August 22, 2026

GitHub Explained Simply - Accounts, Repos, Orgs & Enterprise

GitHub Explained Simply — Accounts, Repos, Orgs & Enterprise

A plain-language guide to how GitHub is structured. All facts verified against GitHub's official documentation (docs.github.com).


1. The Big Picture

Think of GitHub like an office building:

GitHub thingOffice analogyWhat it really is
EnterpriseThe whole building + landlordCentral billing, rules, security for the entire company
OrganizationOne company floorShared account that owns repos and people
TeamA department on that floorGroup of people used to hand out access
RepositoryA single project roomThe actual code + issues + CI/CD
Personal accountYour personal ID badgeOne human being on GitHub

The tree

Enterprise account            (optional — only big companies)
   |
   +-- Organization A
   |      +-- Teams (can be nested)
   |      +-- Repositories
   |             +-- Branches, Issues, Pull Requests, Actions
   |
   +-- Organization B
          +-- ...

Personal account              (every human has one; can own repos too)

The one rule people get wrong

An Enterprise account cannot own repositories directly. Repositories are always owned by an Organization or a Personal account. The Enterprise only owns Organizations.


2. The Three Account Types

Only these three can own things or be billed.

Account typeCan you log into it?Owns repos?Made for
Personal accountYes (this is you)YesOne individual person
OrganizationNo — it has no passwordYesA team, company, or open-source project
Enterprise accountNoNo — it owns organizationsBig companies with many organizations

Simple way to remember:

  • Personal = me
  • Organization = us
  • Enterprise = the whole company

3. Repository (the actual project)

A repository — or "repo" — is a folder of code with full history, plus all the collaboration tools around it.

What lives inside a repo

PartWhat it does
Git dataYour files, branches, tags, commit history
IssuesTo-do list / bug tracker
Pull requests (PRs)"Please review and merge my changes"
ActionsAutomation & CI/CD (files in .github/workflows/)
PackagesStore built artifacts (containers, npm, NuGet, etc.)
ReleasesDownloadable versions of your software
Wiki / DiscussionsDocumentation and Q&A (optional)
SettingsBranch rules, secrets, environments, webhooks

Repository visibility

VisibilityWho can see itAvailable on
PublicEveryone on the internetAll plans
PrivateOnly people you inviteAll plans
InternalEveryone in your enterprise (read access by default)Enterprise Cloud / Enterprise Server only

Internal repos are for "innersource" — code that all your employees can find and reuse, but the public cannot see.


4. Who Can Do What in a Repository

GitHub has 5 built-in repository roles, from least to most access:

RoleWhat they can doGood for
ReadView code, open issues and PRsReviewers, non-coders, stakeholders
TriageRead + manage issues/PRs (label, assign, close) — cannot push codeCommunity helpers, support staff
WritePush code, merge PRsDevelopers on the project
MaintainWrite + some repo settings — no destructive or security settingsProject managers, leads
AdminEverything, including delete & transfer the repoRepo owners

Custom repository roles (mix your own permissions) are available only on GitHub Enterprise Cloud.


5. Organizations (where real teamwork happens)

An organization is a shared account. Nobody logs in as the organization — people log in as themselves and are members of it.

Organization-level roles

RoleWhat it means
OwnerFull control — all repos, settings, billing. Keep this list short, but never fewer than 2 people.
MemberThe normal role. By default can create repos and projects.
ModeratorMember + can block users, set interaction limits, hide comments
Billing managerBilling only — no access to any code
Security managerCan view security alerts and manage security settings across all repos
Outside collaboratorNot a member. Given access to specific repos only. Cannot see the member list.

Custom organization roles also exist — but only on GitHub Enterprise Cloud.

Base permissions (very important setting)

"Base permission" is one switch that gives every member a default access level on every repo in the organization.

OptionEffect
NoneMembers get nothing by default — you grant access explicitly
ReadEveryone can read every repo
WriteEveryone can push to every repo
AdminEveryone is an admin (almost never a good idea)

Best practice: set it to None, then grant access through teams. This is the least-privilege approach.


6. Teams (how you hand out access at scale)

A team is just a named group of people. You give the team access to a repo, then add or remove people from the team.

FeatureHow it works
NestingTeams can have parent and child teams. A parent can have many children; each child has exactly one parent.
InheritanceChild teams automatically inherit the parent's repo access. You cannot give a child less than its parent.
@mentionsType @org/team-name to notify the whole team
CODEOWNERSAuto-request reviews from the right team
IdP syncTeam membership can be synced from Entra ID / Okta groups, so access follows your identity provider
Enterprise teamsTeams can also be created at the enterprise level and then added to organizations

Inheritance example:

Employees
   └── Engineering            ← give this team Write on repo X
         └── App Engineering  ← also gets Write (inherited)
               └── Identity   ← also gets Write (inherited)

Note: Team Discussions have been retired. Use organization-level GitHub Discussions instead.


7. Enterprise Accounts (for large companies)

The enterprise account is the central admin console sitting above your organizations.

Three flavours

FlavourWhere it runsHow users sign in
Enterprise Cloud (standard)github.comPeople use their own personal GitHub accounts; you add SAML SSO + SCIM on top
Enterprise Cloud with EMUgithub.comGitHub creates the accounts from your identity provider; users don't own them
Enterprise ServerYour own servers / VMLocal accounts, LDAP, or SAML

What an enterprise controls

AreaExamples
RepositoriesWhich visibilities are allowed, who can create/delete/fork
ActionsWhich actions may run, self-hosted runner groups, retention
SecurityRequire 2FA, secret scanning, push protection, Dependabot
AccessSAML/OIDC SSO, SCIM provisioning, IP allow lists
AuditAudit log streaming and API access
RulesetsBranch/tag rules that apply across all organizations

Rule of thumb: policies flow downward and get stricter. An organization can be more restrictive than the enterprise, never less.


8. Enterprise Managed Users (EMU) — read before you choose it

With EMU, GitHub creates and deletes accounts based entirely on your identity provider (via SCIM).

How it looks

  • Username is auto-generated and gets your enterprise shortcode added as a suffix.
  • Shortcode is 3–8 alphanumeric characters, joined with an underscore — e.g. jdoe_contoso.

What EMU users cannot do

RestrictionDetail
Public contributionsCan only contribute to private and internal repos inside the enterprise
Wider GitHubRead-only — cannot star, watch, fork, comment, or open issues outside the enterprise
Public reposTheir own personal repos can only be private
Forking outsideCannot fork repos from outside the enterprise
FollowingCannot follow users outside the enterprise
AuthenticationNo password and no GitHub 2FA — the IdP handles it entirely
CopilotCannot use Copilot Free or Copilot Pro — must be given a Copilot Business/Enterprise seat
CodespacesOnly enterprise-owned codespaces; not for personal repos

EMU is a one-way door. You cannot convert an existing organization full of personal accounts into an EMU enterprise — it needs a new enterprise and a migration project.


9. Plans at a Glance

PlanApplies toHighlights
FreePersonal & organizationsUnlimited public and private repos; limited feature set on private repos
ProPersonal accountsAdvanced features on private repos, more Actions minutes
TeamOrganizationsProtected branches on private repos, CODEOWNERS, draft PRs
Enterprise CloudEnterpriseSSO/SAML, audit log API, internal repos, custom roles, EMU option
Enterprise ServerSelf-hostedIncluded with Enterprise Cloud licences

Security add-ons: advanced security features (code scanning, secret scanning with push protection, dependency review) are sold separately from the core plan. GitHub has repackaged these more than once, so always check the current GitHub pricing page rather than relying on any guide.


10. Coming from Azure DevOps?

GitHubClosest Azure DevOps / Microsoft ideaWatch out for
Enterprise accountTenant / management groupNot an identity boundary unless you use EMU
OrganizationAzure DevOps organizationSee the missing layer note below
TeamSecurity group / ADO teamCan be synced from Entra ID
RepositoryADO Git repoGitHub repo also carries issues + CI/CD
Rulesets / branch protectionADO branch policiesRulesets can apply at org and enterprise level
ActionsAzure PipelinesYAML lives in .github/workflows/
Environments + secretsEnvironments + variable groupsSupports OIDC federation to Azure — no stored secrets

The missing "Project" layer

Azure DevOps has: Organization → Project → Repo GitHub has: Organization → Repo (no Project layer)

People usually work around this with:

  • Naming conventions, e.g. payments-api, payments-web
  • Teams that map to what would have been a project
  • Organization-level Projects boards that span several repos
  • Repository custom properties for governance and grouping

11. Which Structure Should You Use?

Your situationRecommended setup
Just me, side projectsPersonal account + private repos
Small team or startupOne organization on the Team plan, access via teams
Company with several business unitsEnterprise Cloud + one organization per business unit or product
Strict identity control / regulatedEnterprise Cloud with EMU + IdP provisioning via SCIM
Air-gapped or data residency rulesEnterprise Server (self-hosted)

Five habits that keep things clean

  1. Keep the number of organizations low. Each one is a separate permission island and more admin work.
  2. Set base permissions to None. Grant access explicitly through teams.
  3. Drive team membership from your identity provider. Joiners and leavers then handle themselves.
  4. Use rulesets at organization or enterprise level instead of repeating branch protection on every repo.
  5. Have at least two organization owners. One person leaving should never lock you out.

12. Quick Glossary

TermMeaning in one line
RepoA project folder with full version history
BranchA parallel line of work inside a repo
ForkYour own copy of someone else's repo
CloneDownloading a repo to your computer
Pull requestA request to merge one branch into another
IssueA task, bug, or discussion item
ActionsGitHub's built-in automation and CI/CD
RulesetModern replacement for branch protection rules; can be set at org/enterprise scope
CODEOWNERSFile that auto-assigns reviewers by file path
SCIMProtocol that auto-creates and removes accounts from your identity provider
SSO / SAMLSingle sign-on through your company identity provider
InnersourceSharing code internally across the company, like open source but private

Sources

All statements above were checked against the official GitHub documentation:

  • Repository roles for an organization — docs.github.com
  • Roles in an organization — docs.github.com
  • About repositories / repository visibility — docs.github.com
  • About enterprise accounts — docs.github.com
  • Abilities and restrictions of managed user accounts — docs.github.com
  • Username considerations for external authentication — docs.github.com
  • About teams (nested teams) — docs.github.com

Note: GitHub changes plans, pricing, and security product packaging frequently. Treat feature availability and pricing here as a guide and confirm the current details on docs.github.com before making decisions.

No comments:

Post a Comment

Featured Post

Top Blogs & Sites — Microsoft 365, Power Platform, Azure, Automation & AI

Top 225 Blogs & Sites — Microsoft 365, Power Platform, Azure, Automation & AI Curated for: M365 administrators, Power Platform / Co...

Popular posts