【问题标题】:Remove files from disk but keep Git clone directory; archive local repo从磁盘中删除文件但保留 Git 克隆目录;归档本地仓库
【发布时间】:2020-02-01 01:53:15
【问题描述】:

用户故事

假设我已经克隆了一个项目并推送了我的工作,现在我已经完成了它。我希望我可能需要回到它,所以我想将克隆保存在本地以快速切换回来,但我也有可能永远完成,所以我想从磁盘转储文件。

问题

可以这样做吗?要“归档”本地 repo,所以我只保留目录和 .git 目录,并且 git 在运行像 git status 这样的命令时会理解这种状态?

[编辑:] 这个问题的主要原因是我可以偷懒,当我回去工作时不必去寻找 repo URL 重新克隆。这确实不是一个关键需求,但它可能非常方便。

【问题讨论】:

  • 您可以 zip/tgz/whateverz 整个项目目录(使用 git repo)并远程目录...您可以稍后再回来扩展整个项目,就像什么都没发生一样。
  • 为什么不完全删除它,如果以后需要重新克隆它呢?
  • @eftshift0:这似乎是满足需求的最佳解决方法
  • @DanielMann:请参阅我添加的“Edit”位。
  • 用我的方法,你不必“找到repo URL重新克隆”

标签: git archive git-clone


【解决方案1】:

这里有一些选项:

  1. (首选)删除文件夹并在需要时再次克隆。无论如何,当您再次开始工作时,您将需要拉动。存储过时的副本并没有太大的好处。
  2. 保持文件夹原样。
  3. 如果您想节省空间,请压缩文件夹。

【讨论】:

  • 如果首选 #1,我不会发布这个问题 ;)。 #2根本不是问题的解决方案。 #3 有一些优点,但 git 也不支持。这只是一种解决方法。
  • 我听到了,但我说这是不必要的工作,最终你还是会做一个git pull
【解决方案2】:

我不会存档,而是use git bundle

这将创建 一个 文件,其中包含完整的存储库历史记录:您可以轻松地将其备份到某个地方。
您可以从该文件中克隆您的存储库。

您可以编写一个脚本:

  • 创建捆绑包
  • 并生成第二个脚本,该脚本能够:

这样,您有两个文件要备份:

  • 捆绑包形式的 Git 存储库
  • (生成的)脚本能够克隆从捆绑包中克隆后恢复远程源 URL

【讨论】:

  • 这可能是 tar 文件或类似文件中的裸仓库吗?
  • @MadPhysicist 不完全是:它不会包含 tar 存储库所包含的所有内容。
  • @MadPhysicist 通常不包括本地挂钩(stackoverflow.com/a/50866035/6309, stackoverflow.com/a/17529039/6309
  • @Rafe 您选择了正确的答案。从捆绑包中克隆回来后,只需将源更改回您想要的任何远程 URL:git remote set-url origin https://new/url
  • @Rafe gzip 不推荐,因为它需要太多原始机器特定的文件/可能包含敏感信息。最好有一个能够读取远程 URL 的脚本(参见 [git remote get-url origin]。(stackoverflow.com/a/32991784/6309),并生成 1/ 一个包,2/ 一个能够克隆该包并重置远程源的新脚本在克隆的 repo 中,将其重置为第一个脚本已读取的 URL。这样,您可以“避免记住原始 URL”,按照要求。
【解决方案3】:

tar/zip 似乎是最好的解决方法:

  • 有效地从 IDEs/search/grok 中删除文件。磁盘并不是真正的问题,但它要小得多。
  • 不会丢失原始 URL,因此在解压缩后,除了提取任何更新外,无需重新开始工作。

Here is a guide randomly yanked from the net.

这只是一个简单的解决方法。如果您需要更多类似备份的东西,特别是如果您计划传输文件,请参阅@VonC's answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2017-06-17
    • 2020-05-26
    • 2014-01-30
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    相关资源
    最近更新 更多