Git - 使工作目录成为主人

时间:2013-10-07 10:57:34

标签: git

我有一个Git工作目录,我想用它来创建一个新的master,保持现有的提交历史记录(等)完好无损。原因是我的原始远程主服务器已损坏,工作目录已经对其进行了更新。

我尝试过工作目录的Git克隆,但我无法推送到克隆目录。如果我将工作目录直接复制并粘贴到我的Git服务器,则会遇到类似的问题。

如何将本地工作目录转换为远程服务器上的新主服务器?

对于Git来说,我是新手,所以没有太多行话的简单解释会非常有用。

3 个答案:

答案 0 :(得分:0)

如果我理解你的问题你正在寻找这个

git remote set-url origin https://blabla.com/newrepo.git
git push origin master

这将保留您当前的所有历史记录,但允许您推送到其他远程存储库。

答案 1 :(得分:0)

我猜你得到的错误是你无法推送到远程仓库因为分支当前已经检出了(例如:Git push receiving "error: refusing to update checked out branch")。

要创建裸仓库(这是一个包含完整历史记录但未检出工作副本的仓库),请执行

git clone --bare yourrepo barerepo.git

然后,取出barerepo.git目录并将其移动到应该托管它的机器上。

完成后,将repo作为远程添加到yourrepo

git remote add origin /path/to/barerepo.git

然后,你应该能够

git fetch origin
git push origin

但是,问题听起来像是要从本地恢复崩溃的远程存储库。一周前有同样的问题:How do I restore a remote crashed Git repo?

答案 2 :(得分:0)

也许您可以使用--force参数强制从本地分支推送到远程主分支,但如果您不知道自己在做什么,我不会推荐它。

  

-f   --force通常,该命令拒绝更新远程ref,该远程ref不是用于覆盖它的本地ref的祖先。这面旗帜   禁用检查。这可能导致远程存储库丢失   提交;小心使用它。

https://www.kernel.org/pub/software/scm/git/docs/git-push.html

这样的事情:

git push --force origin master:master

第一个master表示您要推送的本地分支,另一个master表示您要推送的远程分支。