A lot of my homelab lives in GitHub: compose files, maintenance scripts, the theme for this site. GitHub hides a set of URL tricks that save a lot of clicks. None of them need an extension, a CLI, or a login for public repos. You just edit the address bar.
Here are twelve worth knowing, most useful first.
1. Press . to open the repo in an editor
On any repo, pull request or file, press the . key. GitHub opens the same place in github.dev, a full VS Code editor in the browser, with search, multi-file editing, and commits straight to a branch. You can also swap github.com for github.dev in the URL. It’s the fastest way I know to fix a typo in a README from a machine with nothing installed.
2. Add .patch or .diff to a commit or PR
https://github.com/OWNER/REPO/pull/123.diff
https://github.com/OWNER/REPO/commit/SHA.patch
You get the raw change as plain text. .patch includes author and message, ready for git am. It’s a quick way to pull a fix from an upstream PR onto your own box before it’s merged:
curl -L https://github.com/OWNER/REPO/pull/123.patch | git am
3. ?w=1 hides whitespace changes
Someone reformatted a YAML file and the diff is 400 lines of indentation? Add ?w=1 to the PR’s “Files changed” URL or a commit URL and only the real changes remain.
4. /compare any two points in history
https://github.com/OWNER/REPO/compare/v1.4.0...v1.5.0
https://github.com/OWNER/REPO/compare/main...my-branch
Before upgrading a self-hosted app, compare the tag you’re running against the latest one. Commits, changed files and the full diff are all on one page. Changes to docker-compose.yml or the migration folders jump out immediately.
5. /releases/latest always points at the newest release
/releases/latest redirects to the current release page. Even better, /releases/latest/download/ plus an asset name downloads the newest version of that file:
curl -LO https://github.com/OWNER/REPO/releases/latest/download/tool-linux-amd64.tar.gz
That one line goes into install scripts that should never need a version bump. (It only works if the project keeps asset names the same between releases.)
6. github.com/USERNAME.keys lists public SSH keys
Every GitHub account’s public SSH keys are published at a plain-text URL. Setting up a new VM or Raspberry Pi? This is the quickest way to get your keys onto it:
curl https://github.com/USERNAME.keys >> ~/.ssh/authorized_keys
Ubuntu’s ssh-import-id gh:USERNAME does the same thing. USERNAME.gpg works for GPG keys. Only ever pull your own username into authorized_keys — every key listed there can log in.
7. Link to exact lines with #L10-L25
Click a line number, shift-click another, and the URL ends in #L10-L25. Then press y: the URL switches from the branch name to the exact commit SHA. That’s a permalink that keeps pointing at the right code even after the file changes. It’s the only kind of code link worth pasting into notes and issues.
8. /blame and /commits for a single file
https://github.com/OWNER/REPO/blame/main/path/to/file
https://github.com/OWNER/REPO/commits/main/path/to/file
Blame shows who last changed each line and in which commit. The commits view gives the file’s full history. When a config default changes under you after an upgrade, this is how you find out when and why.
9. Filter commits by author
Add ?author=USERNAME to any /commits URL to see only that person’s commits. Handy for catching up on what the main maintainer of a project has been doing.
10. Grab a snapshot without git
https://github.com/OWNER/REPO/archive/refs/heads/main.zip
https://github.com/OWNER/REPO/archive/refs/tags/v1.5.0.tar.gz
This is useful on minimal systems — NAS shells, appliances, containers — where installing git isn’t worth it. You get a tarball of any branch or tag with plain curl.
11. Raw files for scripts and configs
Click Raw on any file, or build the URL yourself:
https://raw.githubusercontent.com/OWNER/REPO/main/path/to/file
That’s what you curl into a server. Always read a script before piping it into a shell, and pin to a tag or commit SHA rather than main for anything that runs unattended.
12. Search that actually finds things
GitHub’s search bar understands qualifiers, and the resulting URLs are bookmarkable:
is:pr is:open review-requested:@me— everything waiting on you.repo:OWNER/REPO path:docker-compose— find how a project ships its compose files.is:issue is:open label:bug in:title "arm64"— check whether your platform is broken before you upgrade.
Bookmark the handful you use most and GitHub turns into a dashboard for the projects your homelab depends on.