【问题标题】:Best way to restore .git folder恢复 .git 文件夹的最佳方法
【发布时间】:2014-09-06 15:49:30
【问题描述】:

由于代码中的一些错误,我们丢失了一个完整的 GIT 控制目录。恢复文件不是问题; TimeMachine 解决了这个问题。但是,TimeMachine 显然没有备份 .git 文件夹。

有没有比从主服务器或其他机器获取目录更好的方法来恢复/重新创建 .git 文件夹?

提前感谢任何有用的提示。

【问题讨论】:

  • 如果您已经推送了所有更改,为什么还要犹豫使用您的 master 来获取您的 .git 文件夹?
  • "TimeMachine 显然没有备份 .git 文件夹。"这是一个可怕的想法。有人可以证实这一点吗?其他点目录呢?
  • 谷歌快速搜索显示必须手动配置 Time Machine 以避免备份 .git 目录,因此除非您有意设置它,否则我不会担心。
  • 更新:.git 目录确实得到了恢复。不注意是我的错。但是,不知何故 .gitconfig 文件搞砸了,我收到一条“格式错误”的错误消息……进一步调查。所以,无论如何感谢您的帮助。

标签: git restore timemachine


【解决方案1】:

您可以查看一个裸露的 .git 存储库,然后通过添加您的源代码将其扩展为一个完整的存储库。这仍然会下载整个 .git 文件夹,但不会下载您的工作副本代码文件。

  1. 创建一个新文件夹并导航到该文件夹​​。
  2. 克隆一个裸仓库:

    git clone --bare https://path/to/project .git

  3. 将本地恢复的文件复制到 .git 文件夹周围(与之前的相对位置相同)。

  4. 将新的 repo 标记为 non-bare:

    git config --local --bool core.bare false

  5. 最后重新设置索引:

    git reset HEAD -- .

【讨论】:

  • 正常克隆到一个新的备用目录,将“.git”文件夹从备用目录移动到项目文件夹(原来所在的位置)不是更容易吗?
  • @Readren 要求在不从服务器获取所有内容的情况下恢复 .git 目录的问题。
【解决方案2】:

有两种选择:

1. restore it form backup (which i assume you don't have) 
2. clone the repository again and compare the content to add the modified content.

因为 .git 只是包含内容的文件夹。

如果您没有使用 Time Machine 备份它,那么您将不得不再次克隆它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-19
    • 2011-07-08
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多