如何从本地存储库还原原点

时间:2017-02-25 10:44:27

标签: git

git中最好的一个,它是分布式的。假设我们正在开发一个项目,所有最新的分支都会被拉出并合并到我的本地存储库中。

然后发生服务器崩溃,没有备份,没有镜像等。所以中央存储库丢失了。

是否可以从我的本地存储库中恢复具有所有分支的中央存储库?

服务器上的git init --bare --shared=group ./repo.git,然后是git please --recover --with=allbraches mylocal.repository to ssh://...

3 个答案:

答案 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,它是最新提交的别名