【问题标题】:Reinitializing a git repository重新初始化 git 存储库
【发布时间】:2016-04-12 16:07:21
【问题描述】:

我的桌面上有一个 xcode 项目,该项目位于最初有一个 git 存储库的目录中,该存储库具有一个跟踪分支,该跟踪分支跟踪 github 上的远程分支。远程分支有大约 84 次提交,并且比我正在向其中添加功能的项目的主分支提前 2 次提交。我更改了桌面上文件夹/目录的名称。我不是 100% 确定这是否是原因,但是当我转到 git status 时,我得到:fatal: Not a git repository (or any of the parent directories): .git。我的计划是简单地 git Init,添加远程分支并创建一个新的跟踪分支,然后在本地提交到该分支,然后推送到远程分支。但是,我是一个 git 初学者,我不确定这是否是正确的方法。我非常厌倦丢失任何提交历史或意外破坏某些东西。我概述的方法是纠正这种 git repo 丢失的好方法吗?

【问题讨论】:

标签: xcode git


【解决方案1】:

如果您在远程仓库中更新了所有代码,那么您的本地 .git 将被删除。你不需要重新初始化你的本地仓库。而是克隆它。

 git clone remote_repo

如果您在远程仓库中没有任何提交,只需关注

git init
git add all_local_files

如果您更新了远程仓库,而不是在本地进行了一些提交但未推送,并且您丢失了 .git。只需克隆遥控器。在一次提交中添加所有文件

git clone
git add all_local_files

【讨论】:

    【解决方案2】:

    看起来你搞砸了你的 git 存储库,但不是代码/内容。

    恢复和保留本地更改(如果有)的一种方法是:

    1. 从 github 克隆您的 repo 的另一个副本。
    2. 将所有修改过的文件复制到新的仓库,省略删除的文件:rsync -duztv /old/local/repo/ /new/local/repo
    3. git status 看看情况如何。

    【讨论】:

    • 我要弄清楚的一件事是,提交本质上是文件从一个时间点到下一个时间点更改的记录,对吗?所以我在这个名为 REMOTE 的远程分支上有提交的 1-25。在这一点上,这是唯一存在的分支。我克隆远程仓库并在本地获取该分支?当我 git status 我会看到什么?它会告诉我当前本地状态和提交 25 之间的差异吗?如果是这样,我是否应该提交并将提交 26 推送到远程仓库分支:REMOTE?我还需要创建一个本地分支吗?
    • @SubjectiveC 这是一个值得单独讨论 question 或阅读和理解 git 的问题。但是,由于您弄乱了本地存储库并希望保留所做的更改 - 一个好的解决方案是将工作副本克隆到磁盘上的其他位置,并将本地更改从第一个存储库移动到新的存储库。然后输入该状态并查看它是否是您需要的。如果是 - 提交并推送。您要推送到的远程分支存在,对吗?因此,问题缩小到您希望保留辛勤工作的更改而不是放弃它们的事实。
    • 使用 init 或其他方法手动恢复 repo 可能很危险,因为您可能会在某些步骤中创建 git push --force。这种手术几乎是致命的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2015-04-02
    • 2016-07-30
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多