【问题标题】:Recreating remote Github repository from local backup从本地备份重新创建远程 Github 存储库
【发布时间】:2016-01-29 07:13:10
【问题描述】:

短版:

在保留提交历史记录的同时,将本地 Github 备份恢复到 Github 的正确方法是什么?

加长版:

所以,不久前,我在 Github 上开发了一些私人存储库。我打算休息一下,所以为了节省一些钱(并避免公开源代码),我确保我的本地分支已完全更新,然后从 Github 中删除了存储库。现在,我准备将这些本地文件恢复到 Github,这次是公开的而不是私有的。但是,我在将文件恢复到服务器时遇到了问题。

我已经在 Github 上创建了一个同名的裸仓库。 Origin 设置正确,因为项目的名称(和 URL)与以前相同。个人小项目,所以只有一个分支(master)。

但是,由于我的 git status 是最新的(从我进行备份时开始保留),当我尝试 add -A / 提交 / push --all,什么都没有发生。从新的空白远程仓库拉取似乎没有帮助。

我发现了一些关于如何从本地 git 备份恢复的讨论,但他们都假设您正在恢复到自己的服务器上,并且可以在服务器端运行命令。显然,Github 托管的存储库并非如此。

任何帮助将不胜感激!

【问题讨论】:

    标签: git github


    【解决方案1】:

    您是否创建了对 github 存储库的初始提交?你试过用力推吗?如果我正确理解您的历史记录,那么您拥有的本地存储库不是目前存在于 github 上的内容的祖先,因此您需要强制更新 refs,这应该填写您的 github 存储库的所有历史记录以匹配您的本地一个。

       -f, --force
           Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to
           overwrite it. Also, when --force-with-lease option is used, the command refuses to update a remote ref
           whose current value does not match what is expected.
    

    【讨论】:

    • 我刚刚尝试了git push --all --force origin,它没有错误地完成,但是我的文件没有出现在远程仓库中。远程仓库在名称和 URL 上是对原始仓库的重新创建,但不是内容(这是我现在要恢复的内容)。
    • @hwbehrens 嗯,我真的希望它能起作用。我在我的机器上尝试了您准确描述的场景,并且效果很好。 git“认为”它是否与 origin 保持同步都无关紧要。在这一点上建议的另一件事是三重检查一切是否正确。我很难受,所以这里是为什么不这样做:在 github 上克隆你的新 repo,强制从本地副本推送它,然后将现在更新的克隆推送回 github。 TBH 不过,如果遥控器是正确的,那应该没关系。如果不是,那一定是 github(不仅仅是 vanilla git 相关的)。
    • 好吧,我想我只是需要被告知做一些健全性检查。事实证明,我使用的终端上的 git 安装本身存在严重问题。切换到另一台机器解决了我所有的问题。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2012-02-02
    • 2020-01-31
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多