Github Organizations are a great way to manage members for multiple projects. But, the configuration for the permissions works a bit differently than normal repositories, and if you want to give members write access, you’ll need to go digging in the settings.
Changing The Base Permissions
Since Github Organizations are a separate account type, the permissions are not handled like your personal account. Usually, if you want to collaborate, you simply invite collaborators to each repository manually.
However, Organizations can add “Members” directly to the organization. Being a member comes with base permissions for all repositories in the organization’s account, making it easier to access many repositories at once. By default though, the base permission for members is “read only.”
This is because Organizations have a second tool, called Teams, that allows you to group users into subcategories and add those teams to repositories individually. Using teams is overall a more secure method to give out write privileges, but if everyone in your organization needs write permission, you can simply edit the “base permissions” for your organization.
To do that, head over to your org’s page, click Settings, and change the base permissions with the dropdown under “Member privileges.”
On top of write access, you can also give “Admin” permission, which allows members to add new collaborators to repositories.
Inviting individual collaborators is actually still possible in an organization-owned repo and is commonly used for external collaborators. If you want to add a single person manually, you can do so from the repository settings page, under “Collaborators and teams.”
Using Github Teams
If you don’t want everyone having write access everywhere, and don’t want to add a bunch of people manually to every repo, you can add them to a team. You can then add these teams to each repository that they need access to.
Teams are also useful in their own right, as they can be a good way to split up people into groups for discussions. For example, each team can have issue-like discussions from the team’s page, and other teams can mention your team with @teamname in discussions to mention everyone at once.
From your organization’s main page, create a new team from the Teams tab.
You can make this team private, but visible teams can be mentioned directly by other members of the organization. You can also create sub-teams and assign them to parent teams here.
Creating the team will bring you to the team’s overview page, from which you can add new members on the left:
Adding Teams to Projects
You add teams to individual repos in the same way you add individual members. From the repository’s settings page, click “Collaborators and Teams” and add a new team.
You have a few options to choose from, which include the usual like read, write, and admin, but also two others. “Maintain” gives permission to manage the repository itself, like the configuration and branches. “Triage” gives access to manage issues and pull requests.