使用外部Subversion存储库的副作用之一是在每次提交时自动进行异地备份。
我想用Git来实现同样的效果。
也就是说,每次提交到我的本地存储库都会自动提交到一个外部存储库,因此两个存储库总是同步的。
我想,提交后挂钩将是可行的方法。有没有人有具体的例子?
发布于 2010-08-27 18:03:00
为此,我编写了一个提交后挂钩。钩子本身很简单;只需向您的.git/hooks/目录添加一个名为post-commit的文件,其中包含以下内容:
git push my_remotepost-commit文件应该是可执行的。还要确保您添加了一个名为my_remote的合适的remote存储库,这样这个钩子才能工作。
我还创建了一个指向post-commit的名为post-merge的符号链接。这是可选的。如果你这样做,你也会在合并后自动同步。
更新:如果您想确保服务器和镜像不会不同步,并确保所有分支也已备份,您的post-commit挂钩可以使用:
git push my_remote -f --mirror发布于 2021-11-05 18:22:01
我只想补充说,我也有类似的问题,但在我的情况下,我需要每次推送到私有远程存储库,以自动镜像到另一个远程作为备份。我的本地机器也不能直接连接到镜像存储库,所以它必须从服务器端推送。
为此,我必须在远程存储库(在hooks/目录下)上创建一个post-receive挂钩。然后,按照Manoj's answer的建议,我只需在post-receive文件中添加以下命令:
git push --mirror my_remote希望这能帮助其他像我一样偶然发现谷歌这个问题的人。
发布于 2022-01-15 13:06:00
GitBitLabHub允许你使用简单的网络钩子在Bitbucket / Gitlab / Github之间自动镜像存储库。在引擎盖下,它执行以下操作:
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch --prune
git remote set-head origin -d
git branch -a || 'true'
git push --prune dest +refs/remotes/origin/*:refs/heads/* +refs/tags/*:refs/tags/*您只需设置部署密钥和webhooks:
ssh-keygen -t rsa -f ~/.ssh/project_id_rsa它将生成两个密钥,~/.ssh/_id_rsa的私钥和~/.ssh/project_id_rsa.pub.
https://stackoverflow.com/questions/3583061
复制相似问题