共计 872 个字符,预计需要花费 3 分钟才能阅读完成。
git config alias.backup '!f() { ([ -f"/path/to/git-backup/$1/HEAD"] || git init --bare"/path/to/git-backup/$1") && (git remote set-url --delete origin"/path/to/git-backup/$1"2>/dev/null; git remote set-url --add origin"/path/to/git-backup/$1"); }; f'
cd /path/to/something
git init
git remote add origin [email protected]:username/something.git
git backup something
git remote -v
# origin [email protected]:username/something.git (fetch)
# origin [email protected]:username/something.git (push)
# origin /path/to/git-backup/something (push)
如此在每次 push 到 github/gitlab 的同时,还会 push 到 /path/to/git-backup
下,然后再用备份工具对 /path/to/git-backup
进行备份,这样:
- 不用考虑排除哪些文件,不挑备份工具,备份脚本不复杂
- 不用考虑用的是什么 git hosting service
- 不需要额外运行个服务(本来是打算跑个 gitea/gogs 的,但是为了可以加密备份放弃了)
未解决:
- 并非本地做的一些变更提交,例如 actions 中产生的
- 未 push 的,其实我并没有这个需求,我认为只对 push 过的负责挺好的
- 代码以外的东西,例如 issues、pull requests、discussions 中的讨论,尽管我没有这个需求
- 被
.gitignore
排除掉的秘密、配置文件,虽然以前提问过,站内有人推荐 git-crypt,但我觉得我还需要一个别的方案
各位对此思路有什么想法和建议吗?
正文完