|
| 1 | +<div align="center" width="100%"> |
| 2 | + <img src="./assets/logo.png" alt="Git sync logo" width="400" /> |
| 3 | +</div> |
| 4 | +<div align="center" width="100%"> |
| 5 | + <h2>🔄 git-sync</h2> |
| 6 | + <p>A simple tool to backup and sync your git repositories</p> |
| 7 | + <a target="_blank" href="https://github.com/AkashRajpurohit/git-sync/actions"><img src="https://github.com/AkashRajpurohit/git-sync/actions/workflows/release.yml/badge.svg?event=push" /></a> |
| 8 | + <a href="https://goreportcard.com/report/github.com/AkashRajpurohit/git-sync"><img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/AkashRajpurohit/git-sync"> |
| 9 | + <a target="_blank" href="https://github.com/AkashRajpurohit/git-sync/releases"><img src="https://img.shields.io/github/downloads/AkashRajpurohit/git-sync/total" /></a> |
| 10 | + <img alt="Visitors" src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fvc.akashrajpurohit.com%2Fc%2Fakash~git-sync&query=count&style=flat&logo=github&label=Visitors&color=066da5"> |
| 11 | + <a target="_blank" href="https://github.com/AkashRajpurohit/git-sync/releases"><img src="https://img.shields.io/github/go-mod/go-version/AkashRajpurohit/git-sync?filename=go.mod" /></a> |
| 12 | + <a target="_blank" href="https://ko-fi.com/akashrajpurohit"><img src="https://img.shields.io/badge/Ko--fi-F16061?style=flat-square&logo=ko-fi&logoColor=white" /></a> |
| 13 | + <a target="_blank" href="https://akashrajpurohit.com/sponsors/?ref=git-sync"><img src="https://img.shields.io/badge/Sponsor-AkashRajpurohit-F16061?style=flat-square&logoColor=white" /></a> |
| 14 | + <a target="_blank" href="https://github.com/AkashRajpurohit/git-sync/releases"><img src="https://img.shields.io/github/v/release/AkashRajpurohit/git-sync?display_name=tag" /></a> |
| 15 | + <a href="#-contributors"><img alt="All Contributors" src="https://img.shields.io/github/all-contributors/AkashRajpurohit/git-sync?color=1f85bf"></a> |
| 16 | + <a target="_blank" href="https://github.com/AkashRajpurohit/git-sync"><img src="https://img.shields.io/github/stars/AkashRajpurohit/git-sync" /></a> |
| 17 | + <br /> |
| 18 | + <br /> |
| 19 | + <p align="center"> |
| 20 | + <a href="https://github.com/AkashRajpurohit/git-sync/issues/new?template=bug_report.yml">Bug report</a> |
| 21 | + · |
| 22 | + <a href="https://github.com/AkashRajpurohit/git-sync/issues/new?template=feature_request.yml">Feature request</a> |
| 23 | + · |
| 24 | + <a href="https://github.com/AkashRajpurohit/git-sync/wiki">Read Docs</a> |
| 25 | + </p> |
| 26 | +</div> |
| 27 | +<hr /> |
| 28 | + |
| 29 | +`git-sync` is a CLI tool designed to help you back up your Git repositories. This tool ensures you have a local copy of your repositories, safeguarding against potential issues such as account bans or data loss. |
| 30 | + |
| 31 | +## 📺 Demo |
| 32 | + |
| 33 | +[](https://asciinema.org/a/716502) |
| 34 | + |
| 35 | +## 🤔 Why `git-sync`? |
| 36 | + |
| 37 | +Remember when `@defunkt` [GitHub account got banned?](https://twitter.com/defunkt/status/1754610843361362360) Well, he is the co-founder of GitHub so he did get his account un-banned pretty quickly but what if you are not that lucky? |
| 38 | + |
| 39 | +Recently I have seen many developers [getting their GitHub account banned](https://www.reddit.com/r/github/search/?q=account+got+banned&sort=new) and losing access to their repositories. Some may be able to recover their account (but there is delay in that) and some may not be able to recover their account at all. What would you do if you lose access to your repositories? What if GitHub goes down? What if you accidentally delete your repositories? The answer is simple, you should have a backup of your repositories. |
| 40 | + |
| 41 | +`git-sync` provides a straightforward way to back up all your repositories locally, ensuring you have access to your code whenever you need it. It does this by doing a bare clone of all your repositories in a specified directory so that you can recover your code in case of any unforeseen circumstances as well as the file size of your backups is minimal. |
| 42 | + |
| 43 | +## ✨ Features |
| 44 | + |
| 45 | +- **Backup All Repositories:** Automatically clone or update all your GitHub repositories to a local directory. |
| 46 | +- **Periodic Sync:** Keep your backups in sync with your remote repositories by running `git-sync` [periodically](https://github.com/AkashRajpurohit/git-sync/wiki/Setup-Periodic-Backups). |
| 47 | +- **Multi Clone:** While git-sync was designed to work with bare clones to save space and speed up the syncing process, it also supports shallow, mirror and full clones too. |
| 48 | +- **Concurrency:** Sync multiple repositories concurrently to reduce the time required for backup. |
| 49 | +- **Configuration File:** Easily manage your settings through a YAML configuration file. |
| 50 | +- **Custom Backup Directory:** Specify the directory where you want to store your repositories. |
| 51 | +- **Multi Platform:** Currently this project supports backing up repositories from all major Git hosting services like GitHub, GitLab, Bitbucket, Gitea and Forgejo. |
| 52 | +- **Notifications:** Get notified when your sync is complete, or if there are any errors. |
| 53 | + |
| 54 | +## 🚀 Getting Started |
| 55 | + |
| 56 | +We have a thorough guide on how to set up and get started with `git-sync` in our [documentation](https://github.com/AkashRajpurohit/git-sync/wiki). |
| 57 | + |
| 58 | +## 🙏🏻 Support |
| 59 | + |
| 60 | +If you found the project helpful, consider giving it a star ⭐️. If you would like to support the project in other ways, you can [buy me a coffee](https://ko-fi.com/akashrajpurohit) or [sponsor me on GitHub](https://github.com/sponsors/AkashRajpurohit). |
| 61 | + |
| 62 | +Check out my product [CatchIntent](https://catchintent.com/?ref=git-sync), helping you turn social conversations into qualified leads. |
| 63 | + |
| 64 | +<a href="https://catchintent.com/?ref=git-sync"><img src="./assets/catchintent-banner.png" alt="CatchIntent" width="100%" /></a> |
| 65 | + |
| 66 | +## 🐛 Bugs or Requests |
| 67 | + |
| 68 | +If you encounter any problems feel free to open an [issue](https://github.com/AkashRajpurohit/git-sync/issues/new?template=bug_report.yml). If you feel the project is missing a feature, please raise a [ticket](https://github.com/AkashRajpurohit/git-sync/issues/new?template=feature_request.yml) on GitHub and I'll look into it. Pull requests are also welcome. |
| 69 | + |
| 70 | +## 🫱🏻🫲🏼 Contributors |
| 71 | + |
| 72 | +<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> |
| 73 | +<!-- prettier-ignore-start --> |
| 74 | +<!-- markdownlint-disable --> |
| 75 | +<table> |
| 76 | + <tbody> |
| 77 | + <tr> |
| 78 | + <td align="center" valign="top" width="14.28%"><a href="https://akashrajpurohit.com/?ref=git-sync"><img src="https://avatars.githubusercontent.com/u/30044630?v=4?s=100" width="100px;" alt="Akash Rajpurohit"/><br /><sub><b>Akash Rajpurohit</b></sub></a><br /><a href="#code-AkashRajpurohit" title="Code">💻</a> <a href="#ideas-AkashRajpurohit" title="Ideas, Planning, & Feedback">🤔</a> <a href="#review-AkashRajpurohit" title="Reviewed Pull Requests">👀</a> <a href="#doc-AkashRajpurohit" title="Documentation">📖</a> <a href="#question-AkashRajpurohit" title="Answering Questions">💬</a> <a href="#platform-AkashRajpurohit" title="Packaging/porting to new platform">📦</a></td> |
| 79 | + <td align="center" valign="top" width="14.28%"><a href="https://joao.bonadiman.dev"><img src="https://avatars.githubusercontent.com/u/18357636?v=4?s=100" width="100px;" alt="João Vitor Bonadiman"/><br /><sub><b>João Vitor Bonadiman</b></sub></a><br /><a href="#code-jbonadiman" title="Code">💻</a> <a href="#ideas-jbonadiman" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-jbonadiman" title="Answering Questions">💬</a></td> |
| 80 | + <td align="center" valign="top" width="14.28%"><a href="https://qlaffont.com"><img src="https://avatars.githubusercontent.com/u/10044790?v=4?s=100" width="100px;" alt="Quentin Laffont"/><br /><sub><b>Quentin Laffont</b></sub></a><br /><a href="#code-qlaffont" title="Code">💻</a></td> |
| 81 | + <td align="center" valign="top" width="14.28%"><a href="https://github.com/acompagno"><img src="https://avatars.githubusercontent.com/u/4412299?v=4?s=100" width="100px;" alt="Andre Compagno"/><br /><sub><b>Andre Compagno</b></sub></a><br /><a href="#code-acompagno" title="Code">💻</a></td> |
| 82 | + <td align="center" valign="top" width="14.28%"><a href="https://janusworx.com"><img src="https://avatars.githubusercontent.com/u/4888781?v=4?s=100" width="100px;" alt="Mario Jason Braganza"/><br /><sub><b>Mario Jason Braganza</b></sub></a><br /><a href="#bug-jasonbraganza" title="Bug reports">🐛</a></td> |
| 83 | + <td align="center" valign="top" width="14.28%"><a href="https://blog.singee.me"><img src="https://avatars.githubusercontent.com/u/11208082?v=4?s=100" width="100px;" alt="Bryan"/><br /><sub><b>Bryan</b></sub></a><br /><a href="#ideas-ImSingee" title="Ideas, Planning, & Feedback">🤔</a></td> |
| 84 | + <td align="center" valign="top" width="14.28%"><a href="https://github.com/3timeslazy"><img src="https://avatars.githubusercontent.com/u/23486601?v=4?s=100" width="100px;" alt="Vladimir Fetisov"/><br /><sub><b>Vladimir Fetisov</b></sub></a><br /><a href="#ideas-3timeslazy" title="Ideas, Planning, & Feedback">🤔</a> <a href="#bug-3timeslazy" title="Bug reports">🐛</a></td> |
| 85 | + </tr> |
| 86 | + <tr> |
| 87 | + <td align="center" valign="top" width="14.28%"><a href="https://www.peterdavehello.org/"><img src="https://avatars.githubusercontent.com/u/3691490?v=4?s=100" width="100px;" alt="Peter Dave Hello"/><br /><sub><b>Peter Dave Hello</b></sub></a><br /><a href="#platform-PeterDaveHello" title="Packaging/porting to new platform">📦</a></td> |
| 88 | + </tr> |
| 89 | + </tbody> |
| 90 | +</table> |
| 91 | + |
| 92 | +<!-- markdownlint-restore --> |
| 93 | +<!-- prettier-ignore-end --> |
| 94 | + |
| 95 | +<!-- ALL-CONTRIBUTORS-LIST:END --> |
| 96 | + |
| 97 | +## 👀 Who am I? |
| 98 | + |
| 99 | +[](https://akashrajpurohit.com/) |
| 100 | +[](https://linkedin.com/in/AkashRajpurohit) |
| 101 | +[](https://twitter.com/AkashWhoCodes) |
| 102 | +[](https://mastodon.social/@akashrajpurohit) |
0 commit comments