0

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

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

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

当谈到 Git 时,我是一个新手,所以一个没有太多行话的简单解释会非常有帮助。

4

3 回答 3

0

如果我正确理解您的问题,您正在寻找这个

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

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

于 2013-10-07T11:34:23.293 回答
0

我猜您遇到了无法推送到远程仓库的错误,因为分支当前已签出(例如:Git push received "error: refusing to update check 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

但是,这个问题听起来像是您想从本地恢复崩溃的远程存储库。一周前有同样的问题:如何恢复远程崩溃的 Git 存储库?

于 2013-10-07T11:44:37.720 回答
0

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

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

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

所以是这样的:

git push --force origin master:master

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

于 2013-10-07T11:50:18.013 回答