我可以用它的备份替换 Git 存储库吗?
Can I replace a Git repo with its backup?
如果我在 Git 版本控制下复制 MyDirectory
(带有 .git
子文件夹),然后进行提交,则全部 "behave"因为它是自己的小仓库,有版本历史等等?
然后我可以用这个副本替换之前的 MyDirectory
并继续工作吗?
背景:
我的 Git 回购全部搞砸了。我希望我可以用前一天的 整个 目录的备份替换它,然后从那里继续。
是的,你可以这样做,应该不会造成任何问题。
Git 跟踪您的版本历史记录所需的所有内容都位于 .git
文件夹中。因此,用该文件夹的旧版本替换该文件夹会将您的存储库回滚到该旧版本。 与使用git checkout
或git revert
进行Git回滚不同,您还将丢失所有历史记录从那时起就被添加到回购协议中。
为了安全起见,作为@Danh suggested,您应该在恢复备份之前删除该文件夹的现有版本。 (实际上,由于 Git 对象是不可变的,我不确定这是否有必要。不过应该不会有什么坏处。)如果您不想冒丢失文件夹现有版本数据的风险,您也可以移动或重命名它,然后恢复备份。
根据你所说的 "all fouled up" 的意思,它可能仍然可以在不从备份恢复的情况下恢复(特别是如果你没有 运行 任何 "dangerous" 命令,例如--force
的任何内容)。如果您需要帮助,请随时search around or ask here!
如果我在 Git 版本控制下复制 MyDirectory
(带有 .git
子文件夹),然后进行提交,则全部 "behave"因为它是自己的小仓库,有版本历史等等?
然后我可以用这个副本替换之前的 MyDirectory
并继续工作吗?
背景: 我的 Git 回购全部搞砸了。我希望我可以用前一天的 整个 目录的备份替换它,然后从那里继续。
是的,你可以这样做,应该不会造成任何问题。
Git 跟踪您的版本历史记录所需的所有内容都位于 .git
文件夹中。因此,用该文件夹的旧版本替换该文件夹会将您的存储库回滚到该旧版本。 与使用git checkout
或git revert
进行Git回滚不同,您还将丢失所有历史记录从那时起就被添加到回购协议中。
为了安全起见,作为@Danh suggested,您应该在恢复备份之前删除该文件夹的现有版本。 (实际上,由于 Git 对象是不可变的,我不确定这是否有必要。不过应该不会有什么坏处。)如果您不想冒丢失文件夹现有版本数据的风险,您也可以移动或重命名它,然后恢复备份。
根据你所说的 "all fouled up" 的意思,它可能仍然可以在不从备份恢复的情况下恢复(特别是如果你没有 运行 任何 "dangerous" 命令,例如--force
的任何内容)。如果您需要帮助,请随时search around or ask here!