If you work in technology, you’ve likely run into GitHub when working with developers. We say “run into” because for many people — especially project managers — it feels like a brick wall in their path. If you’re not a coder yourself, GitHub can be overwhelming, especially if you’re trying to coordinate a project that involves multiple teams. Don’t fret: GitHub isn’t rocket science. Anyone can quickly learn enough about the tool to at least follow along with progress on a project and communicate their needs to developers.
GitHub is a web-based, version control system which uses Git, the open-source version control software. It provides a place for developers to host and share their projects — a space to save earlier iterations, collaborate with other developers, show off their skills, and see what their peers are working on.
One of the reasons developers are so reliant on GitHub is because diligent versioning is essential to the quality of their work, their ability to deliver on time, and their sanity. When multiple developers are working on a single project, two coders working off of different versions can potentially waste countless hours of time working on components that will ultimately be incompatible and require even more hours of extra work to reconcile.
Version control is also important for solo developers. Having an organized library of previous versions can be a lifesaver when you need to track down the origin of a new bug in the code.
Why developers love GitHub
Because GitHub is built on open-source principles, it’s as much a place for sharing code as it is a tool for storing it. This makes GitHub a highly collaborative environment. Developers are free to download a piece of software, make updates and revisions to it, and share their new version. This creates a (positive) endless loop in which developer after developer downloads, updates, and shares code.
For people who eat, sleep, and breathe code, GitHub isn’t just a handy tool; it’s a place to experiment, innovate, learn new things, and connect with like-minded people. The ability to take a difficult programming task to GitHub to solicit new perspectives, explore other coders’ solutions, and study similar programs makes it much easier for developers to solve problems without having to reinvent the wheel each time.
Developers also love GitHub because it’s super configurable. It provides connections to countless tools in areas like security, chat, code review, and beyond. You can find the many available integrations in the GitHub marketplace.
How to speak GitHub
If you want to know what your developers are saying, you’re going to have to familiarize yourself with some GitHub-specific jargon.
Sometimes shortened to just “repo,” repositories are the essential elements of GitHub. Repositories contain all of the files and revision histories for each project hosted on GitHub. It’s sort of like the file folders on a computer. Repositories can be either public or private, and multiple users can work collaboratively within a single repository.
Each repository can contain multiple copies of the same project. Each separate version is a “branch” of the original project, and changes made to individual branches can be merged into the primary branch if desired.
A copy of a repository that is hosted locally on a user’s device. Clones can be synced up with their originals in the GitHub repository.
A record of a change made to a file or files in the repository. Every commit has a unique ID for tracking purposes and can contain a user-defined message that describes the changes that were made.
“Forking” is when you copy another user’s repository to your own account. You can then make any changes you want to your forked copy, leaving the original unaffected. However, forks retain a connection to their original source, so you have the option to update your copy with changes made to the original at a later date.
Issues are essentially used to help you organize yourself within GitHub. They’re mainly used to track bugs, but they can also be used to collect user feedback and organize tasks. Assign issues to colleagues, put them in milestones or project boards, or reference them in pull requests.
For an even wider organizational view, GitHub has project boards. Made up of issues, pull requests, and notes, project boards organize your work into a kanban view — particularly useful for project managers. They can be used for complex feature work, release checklists, or more comprehensive roadmaps.
Merging changes made to the repository files into the local copy you’re working on is called “pulling.” A “push” is the reverse, of course — updating the repository files with changes you’ve made to your local copy.
When you want to make changes to a repository you’re working on as part of a collaborative project, you send a “pull request.” The other users can then approve or deny your request, or keep them contained to a separate branch. Pull requests are generally where you’ll find a feedback loop during the development cycle. Other developers review your code, find bugs, suggest changes, discuss its quality and implementation, and more.
Refers to recording and tracking the revisions made to a project, the saved copies of different stages or iterations of that project, and the tags and naming conventions used to differentiate its various coexisting versions.
Surprising uses for GitHub
Many outside-the-box thinkers have noticed that there’s nothing requiring the documents stored in GitHub repositories to be programming code. GitHub can be used as an online version control system for many different types of projects. You could host a user manual on GitHub, allowing various writers to work on it while carefully tracking revisions.
To be clear, GitHub isn’t optimized for versioning non-coding projects. But developers might benefit from being able to collaborate on these other types of projects within the tool they love.
Git with the program
You don’t have to spend all your spare time forking projects on GitHub to earn credibility with the developers on your team. A little familiarity can go a long way in helping you connect with coders and better manage your overlapping projects.
For easier collaboration with developers, consider syncing GitHub with a project management tool like Wrike, Trello, or Asana. With Unito, you can sync issues and pull requests to the tools you’re more familiar with. This allows you to easily maintain visibility into dev projects and communicate with the development team without interrupting your workflow.