Skip to content

Using git for Hardware

git is a powerful way to version control your design and one of the key reason we started atopile. If you don't know about git, we strongly recommend learning it. There is a high chance you will end up loving it.

Workflow Overview

git is the de-facto standard for version control in software development. For people who haven't used it before, it's worth explaining a few terms and the workflow

Term Definition
Repo or Repository A collection of files and directories that is version controlled together.
Branch A "branch" is an isolated space for your changes.
Commit A "commit" is a snapshot of some changes in that place in time.
Push A "push" is sending your changes to the remote repo.
Pull Request A "pull request" is a request to merge your changes into the main branch. This is the time to review and test your changes with others on your team.
flowchart TD
    AA[Find a project you want to work on on Github] --> A[**Clone** a copy of the repo to your computer]
    AB[Create a new project on Github] --> A
    A --> B["Create an isolated space (or **branch**) for your changes"]
    B --> C[Do some work ⛏️]
    C --> D[Check the **status** of your changes]
    D --> E[**Stage** the changes for one topic]
    E --> F[**Commit** the changes with a message explaining what you did]
    F -->|More work to do on this topic| D
    F -->|Ready for review| H[**Push** your branch to the **remote** repo on Github]
    H --> I[Create **Pull Request** on GitHub]
    I --> II["Continuous Integration (**CI**) runs tests and ensures your project still builds after your updates"]
    II -->|Tests pass| J[**Review** all the changes]
    II -->|Tests fail| D
    J -->|Changes requested in review| D
    J -->|Approved| K[**Merge** to main]
    K --> L[Your changes are now combined with the work of everyone else on the project]

Basic Usage

git clone <repo-url>
git checkout -b <new-branch-name>
git add <file-to-commit>
git commit -m "This commits adds an LED indicator..."
git push -u origin HEAD

More resources