git中最好的一个,它是分布式的。假设我们正在开发一个项目,所有最新的分支都会被拉出并合并到我的本地存储库中。
然后发生服务器崩溃,没有备份,没有镜像等。所以中央存储库丢失了。
是否可以从我的本地存储库中恢复具有所有分支的中央存储库?
服务器上的git init --bare --shared=group ./repo.git
,然后是git please --recover --with=allbraches mylocal.repository to ssh://...
答案 0 :(得分:2)
从您当地的仓库git push origin --all
。我假设恢复的服务器上的新repo具有相同的URL。如果网址已更改,请先git remote set-url origin <new URL>
。
答案 1 :(得分:2)
执行这些命令
# Check remote Git server.
git remote -v
# If Git server changed or doesn't exist.
git remote set-url origin your_remote_git_server
# For example.
git remote set-url origin https://github.com/donhuvy/elasticsearch.git
# Check your permission on Git server. You must be master user.
# Force push all branches to remote Git server.
git push origin --all --force
# Force push all tags to remote Git server.
git push origin --tags --force
# Check result after the above steps by few command.
git status
git branch --all
git log --oneline -10
git log --oneline --graph --decorate --all
答案 2 :(得分:1)
由于你的遥控器被删除了,你还没有任何来源,所以你必须在服务器上创建一个新的仓库,而不是更新你的远程URL以指向新的仓库
如果您不希望本地分支机构只需按下您需要的分支机构。
这是一个用于结帐所有分支而不是将它们推送到新远程
的脚本#!/bin/bash
# update the new origin
# (or leave the same one if its the same as the original)
git remote set-url origin <new-url>
# loop over all the original branches
# 1. check them out as local branches
# 2. set the origin as the track branch
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
git branch --track ${branch#remotes/origin/} $branch
done
# now push all branches and tags
git push origin --all
git push origin --tags
<强> git branch -a
强>
获取所有本地分支的列表
<强> | grep remotes
强>
分支名称是:&#39;远程/来源/&#39;所以这将从分支名称中删除遥控器
<强> | grep -v HEAD | grep -v master
强>
删除master(当前分支)和HEAD,它是最新提交的别名