Skip to main content
U.S. flag

An official website of the United States government

Dot gov

The .gov means it’s official.
Federal government websites often end in .gov or .mil. Before sharing sensitive information, make sure you’re on a federal government site.

Https

The site is secure.
The https:// ensures that you are connecting to the official website and that any information you provide is encrypted and transmitted securely.

Intro to GitHub

This section provides a brief overview of GitHub.

Documentation

GitHub

GitHub is a publicly accessible place to share and collaborate on (primarily) open source software projects. GitHub interacts with a program on your computer called Git that tracks every change ever made in a software project.

You’ve probably already noticed there’s a lot happening on GitHub at TTS. That’s because it’s so useful! In fact, it’s very likely you’ll interact with GitHub in some way, even if you’re not writing code. The remainder of this post will help you get squared away with creating your GitHub account, setting up some basic stuff, and will show you some of the ways you might use GitHub, even if it’s not committing code.

1. Set up your account

Follow the instructions here.

2. Basics

If you’re a developer, you might have very strong feelings about The Right Way to Use Git, but TTS doesn’t (yet) have One Way of Using Git, so ask your teammates how they work with GitHub.

If you’re not a developer or came from a place that didn’t use Git, here are some GitHub-related terms you should be familiar with:

Once you’re a member of the 18F organization, you’ll have access to many of our repos. You’ll also have at least read-only access to a few of our private repositories. Check with your team on how to interact with a project. In some cases, the repos themselves have information in a CONTRIBUTING.md file for guidance.

3. Working with GitHub

If you’re working with an agency, you’ll need to find ways to collaborate with them on the project you’re tasked with. Typically, the way we give outside agencies and contractors access to GitHub repos is by making those repositories public. Once they’re public, anybody can access them; we just need to add people as a collaborators. #admins-github can help you with that.

You can use GitHub for almost anything, but consider the resources available to agency partners or other stakeholders before deciding to use it. Are your agency partners used to using GitHub? Will they need to create accounts and jump through hoops? Can they even access it from their agency computers? These are the kinds of things we consider when deciding if GitHub is the right thing to use.

TTS sometimes adds contractors and agency partners to the 18F organization on Github. We sometimes use forks to collaborate with contractors. Sometimes we do both. Again, check with your team on how to do this.

Most projects/repositories have a CONTRIBUTING.md file in their root directory that explains how the team invites people to contribute to the project. They might prefer chats over pull requests, for example.

Another pro tip: Search the existing issues before you add one. It may make more sense to comment on that issue rather than create a new one.

To submit an issue, Log in, find the appropriate repo on GitHub, and click the Issues tab in the right column. Then, click the New Issue button. Your issue should have a title and explainer text. You’ll probably know what to put there, but teams sometimes have guidance on how to format issues or things to include. The #blog, for example, has a specific set of things we require submissions to have before we’ll consider them.

Final pro tip: If your project wants issues formatted in a specific way, you can add an issue template file. This is the one we have for filing new blog post ideas. Every new post auto-fills with that information.

4. Transferring a repository

Often during the course of working with and transitioning projects to partners, an 18F-owned Github repository will need to be transferred to the ownership of the partner. A “Transfer” is the recommended approach since it will include Issues, Pull Requests, and other Github metadata and history that won’t be captured by just cloning the git respository which only contains the code.

Transferring to another organization on Github.com

This is a simple process that can be initiated in the Github user interface, but requires a user with ownership permissions to the Github repository in question (a higher level of access than admin). For help transferring a repository, please send a message to #admins-github. More details can be found on Github.

Transferring to Github Enterprise

Unfortunately, transferring repositories from Github.com to Github Enterprise cannot be done via the Github user interface and requires a process that relies on the Github API. Access to the migration API will require ownership permissions to the repository in question on both sides of the transfer. Please coordinate with #admins-github and partner administrators to facilitate this type of transfer. See Github for more details.