Clone every repo in a GitHub organisation or user to your NAS, and keep them up to date
Choose an account and a folder on a NAS or local disk. Repo Harbor writes a script for you to run that clones
each repository into its own sub-folder, or, for clones you already have, stashes your changes and pulls
main or master in every one.
- Organisations and users
- NAS or local storage
- Windows, macOS and Linux
- Only needs git
-
Choose the GitHub account
-
Pick the repositories
Find an account in step 1 to see its repositories here.
-
Choose where to put them
-
Get your clone script
-
Where are your clones?
The folder that holds one sub-folder per repository, such as the destination you cloned into.
-
Choose what happens to local changes
Each repository pulls
main, ormasterwhen there is nomain. Updates only ever fast-forward, so no merge commits are made, and repositories in the middle of a merge or rebase are skipped untouched. -
Get your update script
Questions
Why do I run a script instead of the website doing it?
A web page isn't allowed to run git or write to your disks and network shares. So Repo Harbor does the parts a browser can: it finds the repositories and writes a script that's ready to run. You can read the script before you run it, and it never sends your files anywhere.
How do I point it at my NAS?
On Windows, use a network path such as \\nas\share\code or a mapped drive like Z:\code. On macOS, connect to the share in Finder and use /Volumes/share/code. On Linux, use where the share is mounted, such as /mnt/nas/code. With NAS selected, the script tells git to trust the repositories there, because shares often report a different file owner and git would otherwise refuse to work with them.
Can I run it again?
Yes. The clone script skips repositories that are already cloned, so running it again only adds new ones. The update script can run as often as you like, for example from Task Scheduler or cron.
What about private repositories?
Add a token in step 1 so the website can list them. To clone them, git on your computer must be signed in to GitHub. Git for Windows and GitHub Desktop do this for you; elsewhere use gh auth login or an SSH key.
Where did my changes go?
Into a stash named repo-harbor auto-stash with the date and the branch you were on. Run git stash list in the repository to see it and git stash pop to bring it back. The script lists every repository it stashed in.
What does it need?
Git, and PowerShell 5.1 or later (included with Windows) or Bash 3.2 or later (included with macOS and Linux). Nothing else is installed.
Privacy Policy
Second edition, effective 27 October 2026. It now covers the recent accounts and folders this website remembers.
This website
This policy covers Repo Harbor, https://adrianeyre.github.io/github-harbor/, a single static page published from its GitHub repository and hosted by GitHub Pages. It has no accounts, no sign-in and no server of its own.
What this website collects
Nothing. There is no analytics, no tracking and no advertising, and the page's fonts, icons and images all come from this site, so loading it sends nothing to anyone else.
What you type in
- The organisation or username you enter is sent straight from your browser to GitHub's public API, at api.github.com, to list its repositories. Nothing passes through any other server.
- A token, if you add one, is sent only to GitHub, in the same requests. It is held in the page's memory while the tab is open, is never saved and is never put in a script.
- Folders and options you choose stay in your browser. Your scripts are made in your browser too, and are only saved when you download them.
- Your settings (your last choices, up to 5 recent accounts and up to 8 recent folders, but never a token) are remembered in your browser's local storage so they can be filled in or suggested next time, as the Cookie Policy explains. Folder names may include your NAS's server and share names. They never leave your device, and you can clear them at any time.
Who else sees your visit
- GitHub hosts this website and answers its API requests. Like any web host, it receives your IP address and what your browser asks for, and may log them, as the GitHub General Privacy Statement explains.
- Links to other sites leave this website, and those sites have their own privacy policies.
The scripts
The scripts run on your computer and talk only to the git remotes they clone from or pull from, which are GitHub's. They report nothing to Repo Harbor or anyone else.
Your rights
This website holds nothing about you. To clear your saved settings, use the button in the Cookie Policy or clear this site's data in your browser. For a question about this policy, open an issue on GitHub.
Changes
This policy may change along with the website. The date at the top shows when it last changed.
Terms and Conditions
First edition, effective 27 October 2026.
Using this website
Repo Harbor writes scripts that clone and update git repositories. By using it, you agree to these terms and to GitHub's own terms, for the GitHub Pages this site is hosted on and for the GitHub API it uses.
Your scripts, your computer
The scripts are written for you to read before you run them. You run them on your own computer, at your own risk, against your own storage. They only create folders, clone, fetch, stash, switch branches and fast-forward, and they never delete files or force anything. Still, keep backups of work that matters.
Repositories and accounts
Only clone repositories you are allowed to. Their licences, and the terms of the GitHub accounts and organisations they belong to, still apply. A token you add must be your own, and you are responsible for it.
Names and trademarks
GitHub and Git are trademarks of their owners and are named only to say what Repo Harbor works with. Repo Harbor is not made or endorsed by GitHub.
No warranty
This website and the scripts it writes are provided as they are, without warranty of any kind. Its authors are not liable for any loss arising from their use, to the extent the law allows.
Law
These terms are governed by the law of England and Wales, whose courts settle any dispute about them. If you live elsewhere in the United Kingdom or in the European Union, you also keep the protection of your own country's mandatory laws.
Changes and contact
These terms may change along with the website. The date at the top shows when they last changed. For a question, open an issue on GitHub.
Cookie Policy
Second edition, effective 27 October 2026. It now covers the recent accounts and folders this website remembers.
No cookies
This website sets no cookies. It remembers your settings, and the accounts and folders you've used, in your browser's local storage, only so you don't have to type them in again. That is strictly for a feature you use, so there's nothing to accept and no banner asks you to.
Local storage stays on your device, in this browser only. It is never sent to this website, to GitHub or to anyone else, and other websites can't read it.
What is stored
| Name | Type | Purpose | How long |
|---|---|---|---|
repo-harbor:settings |
Local storage | Your last choices: the account name, the folder for each tab, NAS or local storage, the computer (Windows, macOS or Linux), HTTPS or SSH, and the fork, archived and stash options. | Until you clear it |
| Recent accounts: up to 5 organisations or users you looked up successfully, suggested in the account field. | |||
| Recent folders: up to 8 destination folders you copied or downloaded a script for, each with its storage type and computer, suggested in the folder field. These may include NAS server and share names. |
What is never stored
Your GitHub token, the repositories listed and the scripts themselves are never stored. Scripts are only saved where you download them.
Controlling it
Use Clear my saved settings above to remove everything this website has stored in this browser. Clearing this site's data in your browser's settings, or using a private window, also works.
Other sites
Links to GitHub and other sites leave this website, and those sites may set their own cookies under their own policies.
Accessibility
First edition, effective 27 October 2026.
Conformance status: this website is built to meet the Web Content Accessibility Guidelines (WCAG) 2.2 at Level AA.
What we have done
- Keyboard access: every link, button, tab, checkbox and dialog works with a keyboard alone. Focus has a clear outline that the sticky header and footer never hide, and a "Skip to main content" link comes first on the page. On very short screens, or zoomed right in, the header and footer stop sticking so they don't take up the page.
- Screen readers: one main heading, headings in order and labelled landmarks. Every control has a visible label, and results, errors, copying and downloading are announced.
- Forms: labels and hints sit beside each field, errors say what went wrong and how to fix it, and your previous answers are filled in for you.
- Colour and contrast: text has at least 4.5:1 contrast with its background, and controls, icons and focus outlines at least 3:1, in both light and dark mode, which follow your device. Windows Contrast Themes are respected, and colour is never the only way something is shown.
- Motion: transitions are short, and they are switched off when your device asks for reduced motion.
- Zoom and reflow: the page reflows down to 320 pixels wide and at 400% zoom without scrolling sideways.
- Target sizes: every control is at least 24 by 24 pixels, and main buttons at least 44 pixels tall.
- Dialogs: these policies and the Changelog move focus in, keep it there, close on Escape and return focus to whatever opened them.
Known limitations
- Long lines in the script preview scroll sideways inside their own frame on narrow screens. The frame can take focus, so the arrow keys scroll it.
- The scripts' coloured output in the terminal also says everything in words, but how it looks depends on your terminal.
Feedback
If something is hard to use, please open an issue on GitHub and tell us what you were trying to do and which browser and assistive technology you used.