- On GitHub, open the repository page and click Code.
- Copy the HTTPS (or SSH) URL.
- Clone locally:
git clone <REPO_URL>
cd microkernel-os- On GitHub, click Fork to create your copy.
- Clone your fork:
git clone <YOUR_FORK_URL>
cd microkernel-os- Add the upstream remote so you can sync later:
git remote add upstream <REPO_URL>
git remote -vgit config --global user.name "Your Name"
git config --global user.email "you@example.com"- HTTPS: you may need a GitHub Personal Access Token (PAT) instead of a password.
- SSH: you need an SSH key added to your GitHub account.
If you can clone but cannot push, it’s usually permissions or auth.
If you cloned the main repo:
git pullIf you’re working from a fork:
git fetch upstream
git checkout main
git merge upstream/main
git push origin mainBranch names:
feature/<name>fix/<name>docs/<name>
git checkout -b feature/ipc-queue- Keep branches short-lived
- Keep PRs small and focused
Check what changed:
git statusStage changes:
git add -ACommit (write a clear message):
git commit -m "ipc: add endpoint ring buffer"git push -u origin feature/ipc-queueOn GitHub, open a PR from your branch to main.
- Link the issue you worked on (see
docs/ISSUES.md) - Include QEMU output / screenshot for behavior changes
- Must boot in QEMU (
make run) before requesting review - Include logs/screenshots for behavior changes
- Keep C code warning-clean where practical
- Prefer small functions and explicit naming
- Every PR links an issue
- Mark blockers clearly and ask early
Common causes:
- You’re not inside a git repo (no
.git/directory). Fix by cloning the repo instead of downloading a ZIP. - Git isn’t installed or isn’t on PATH.
To check if you’re in a repo:
git rev-parse --is-inside-work-treeBefore opening a PR (or if CI fails due to conflicts):
git fetch origin
git rebase origin/mainIf you rebased, you may need a force push to your branch:
git push --force-with-lease