git - "git push --mirror"删除远程标签。有什么方法可以恢复它们吗?

标签 git push restore mirror

在跳到回答之前,请仔细阅读这个乱七八糟的内容!

问题:

  1. 我正在做一个项目(使用 git 进行版本控制)。
  2. 我创建了标签 v2.x 并将其推送到我的远程 origin
  3. 这个远程源是一个私有(private)镜像,在 1.x 系列中没有标签。 原因 - 我们在 v2.x 中从头开始编码,因此保留 1.x 只是出于历史原因。
  4. 没有意识到这一点,我在我们的公共(public) github 存储库中添加了另一个 Remote 。
  5. 我想让我们镜像最新的标签并提交到 github(因为我是唯一的开发者 - 我没有费心去 merge !)

我用过:

git push --mirror

并且它从 Github 中删除了 1.x 系列中的所有标签!

现状:

这意味着数据存在于远程......

什么可能有效:

  1. 如果我可以克隆带有所有日志的 Github 存储库,包括有关本地已删除“提交”的日志,那么我的“本地”也会删除提交。之后可能是 git reflog/rebase/reset 练习。

  2. 我假设远程 git 是一个完整的 repo 本身及其 showing commits by SHA1 hashes ,如果我可以在“远程”上运行 git reflog/rebase/reset 理论上可能会起作用。

请注意,我正在寻找纯 git 方式。我们可以手动下载“标签”(zip),从 SVN 恢复(我们在 1.x 期间使用 SVN)

请让我知道您的建议/解决方法。

最佳答案

我通过艰难的方式了解到 git 中的数据可能会丢失。

我的问题没有答案。我不得不做一些手工工作(从旧的 svn 文件复制旧标签 + 下载一些压缩版本并标记它们等)

所以,如果你这样做:

  1. 在本地初始化一个 git 仓库,添加一些文件并提交。
  2. 然后更改远程源然后执行 git push --mirror 到远程服务器

远程仓库将是您本地仓库的完整镜像。如果远程仓库有其他克隆/备份/镜像等,则无法撤消此操作。

当然,我(不小心)做的是非标准方式,所以 git 不对此负责...

关于git - "git push --mirror"删除远程标签。有什么方法可以恢复它们吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12264242/

相关文章:

windows - MYSQL.EXE 和 MYSQLINPORT.EXE 输入文件? ( Windows )

elasticsearch - Windows上的ElasticSearch备份,Linux上的Restore

svn - git提交者和SVN用户之间的映射

node.js - 从私有(private)存储库安装 Node 包的 Maven 构建步骤

javascript - JS 中 .push 处的代码损坏。

jquery - 我希望在菜单 slider 向下时将我的内容向下推

mysql - 通过上传db文件恢复MySQL数据库?

带引号的 git checkout 分支

Git 只记录文件的一部分?

闲置 2-3 小时后未收到 iOS 后台推送通知