我有一个 Git 工作目录,我想用它来创建一个新的 master,保持现有的提交历史(等)不变。原因是我原来的远程主服务器已经损坏,并且工作目录已经对其进行了更新。
我尝试了工作目录的 Git 克隆,但我无法推送到克隆的目录。如果我将工作目录直接复制并粘贴到我的 Git 服务器,则会遇到类似的问题。
如何将本地工作目录转换为远程服务器上的新主目录?
当谈到 Git 时,我是一个新手,所以一个没有太多行话的简单解释会非常有帮助。
我有一个 Git 工作目录,我想用它来创建一个新的 master,保持现有的提交历史(等)不变。原因是我原来的远程主服务器已经损坏,并且工作目录已经对其进行了更新。
我尝试了工作目录的 Git 克隆,但我无法推送到克隆的目录。如果我将工作目录直接复制并粘贴到我的 Git 服务器,则会遇到类似的问题。
如何将本地工作目录转换为远程服务器上的新主目录?
当谈到 Git 时,我是一个新手,所以一个没有太多行话的简单解释会非常有帮助。
如果我正确理解您的问题,您正在寻找这个
git remote set-url origin https://blabla.com/newrepo.git
git push origin master
这将保留您当前的所有历史记录,但允许您推送到不同的远程存储库。
我猜您遇到了无法推送到远程仓库的错误,因为分支当前已签出(例如: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 存储库?
也许您可以使用--force
参数强制从本地分支推送到远程 master 分支,但如果您不知道自己在做什么,我不建议您这样做。
-f --force 通常,该命令拒绝更新不是用于覆盖它的本地引用的祖先的远程引用。此标志禁用检查。这可能会导致远程存储库丢失提交;小心使用它。
https://www.kernel.org/pub/software/scm/git/docs/git-push.html
所以是这样的:
git push --force origin master:master
第一个master
代表您要推送的本地分支,另一个master
代表您要推送到的远程分支。