【问题标题】:Is there a way to backup a branch in git and be able to "reimport" it?有没有办法在 git 中备份一个分支并能够“重新导入”它?
【发布时间】:2014-07-10 08:13:50
【问题描述】:

我有一个要删除的分支,但可能能够用完整的历史记录恢复它 - 有没有办法做到这一点?所以想要这个:

a - b - c - d - e    master
     \
      f - g    tmp

变成:

a - b - c - d - e

并以某种方式存储a - b - f - g,以便我可以重新应用它 - 有可能吗?

【问题讨论】:

  • 你已经在某处的分支上找到了 A-B-F-G。如果你需要它,你只需要将 tmp 合并到 master 中。我建议不要删除它,因为您认为您想在某个时候将其恢复。
  • @Makoto:这只是出于好奇 - 加上删除它的原因(二进制文件等)。有没有办法实现我所说的?
  • 真的应该避免在 VCS 中存储二进制文件。
  • @Makoto:我知道这不是我的树 - 这就是我想要备份并能够重新检查它的原因

标签: git


【解决方案1】:

也许您可以使用git fast-export 将分支保存到文件中。然后,如果您以后需要它,您可以使用git fast-import 将其取回。

要完成保存单个分支tmp(即提交fg),可以使用triple dot syntax,如下:

git fast-export master...tmp

【讨论】:

  • 啊哈! - 我将如何导出单个分支?
  • 查看我的回答中的链接文档,它有一个选择要导出的修订的示例。
  • 即——我应该指定 f..g 吗?这样就够了吗?和 >> 到一个文件?那么这个文件会与快速导入一起使用吗?
  • 我实际上并没有使用它,除了导出整个 repo,但如果文档是准确的,那么这听起来是正确的。 (其中f 将被排除在外,而g 将被包括在内)。是的,重定向到文件并从文件中快速导入。
  • 感谢 @thirtythree 提供方便的语法 :) - 认为人们实际上拒绝了您只会增加价值的编辑...
【解决方案2】:

只需将存储库克隆到另一个位置,然后从原始存储库中删除分支。您将能够在锥体中检查它,如果需要,将其从那里拉回。

克隆中的分支基本上只不过是一个与当前存储库不同的分支。您可以随时将分支移回您的旧存储库。

将分支从克隆推送回原始存储库更加容易。

所以,在你的克隆中做:

git push origin that_branch 

曾经将分支推送到 github 吗?是的,这完全一样。

【讨论】:

  • 当然。这是一个精确的克隆。欢迎使用分布式版本控制 :)
  • 我知道 git - 我想要的是导出一个分支 - 显然@MattMcNabb 的答案更相关。我如何将分支从克隆中移回?
  • repo 很大——我宁愿避免克隆它,而是只导出我感兴趣的 blob
【解决方案3】:

为了保留tmp的更改,您似乎已经得到了想要的东西。您应该保留分支,直到它不再有意义,以便将更改从 tmp 应用到 master

这可以通过以下简单的方式来实现:

git checkout master
git merge tmp

这会将您从 tmp 的更改应用到 master

如果你要将你的 git 历史备份到其他服务器或其他地方,你会做几乎相同的事情;历史图表仍然会显示相同的内容,并且您将以相同的方式恢复更改。

【讨论】:

  • 离题 - 请参阅已接受的答案 - 正是我想要的(显然不仅仅是我)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 2017-04-08
相关资源
最近更新 更多