首页 > 解决方案 > 为什么git要删除文件?

问题描述

我不确定这是否可能是一个原因,但前言。为了解决这个问题,我遇到了一个无法从远程仓库中提取的问题,我在一个新文件夹中创建了新的仓库git init并在此之后设置git remote了我从源中提取的内容。

关于当前问题:其他开发人员已将更改合并到主分支中,现在我需要将其拉到我的开发分支中。合并后,我发现从主分支拉出后我得到了所有新文件,但我也看到合并删除了我在本地创建的所有新文件......

我想到了一个可能的原因,即在我创建新的 repo 并设置后,get remote我没有获得历史记录,我不知道为什么,但也许这是一个原因。

我究竟做错了什么?如何解决?

编辑

我正在GitExentions用作 UI。

与大师合并后,我解决了一些冲突。

EDIT2 根据@RJFalconer 在评论中的建议,最好集中精力解决原始存储库中的问题git clone,但无论如何我已经做了很多不在远程存储库中的更改。因此,即使我会解决get clone问题,我也需要以某种方式将我的更改从当前存储库中移出。

标签: git

解决方案


简短的回答是“它不会删除文件”。除非您明确这样做reset --hard,否则clean -fgit 不会删除本地结帐中未跟踪的文件

我在一个新文件夹中创建了新的仓库git init并设置git remote

听起来你已经创建了一个新的 repo 并为第一个 repo 添加了一个遥控器。我认为你真正想做的是git clone第一个回购。

我在本地创建的所有新文件

目前尚不清楚您的意思是什么,但听起来您可能向您的存储库添加了一些文件(使用创建的空文件git init),可能会提交它们。假设您提交了它们,就好像您没有提交它们并且它们现在不在磁盘上一样,它们无论如何都丢失了。

我的理论

您的仓库中可能有 2 棵树;您添加的文件,以及来自远程的远程主机。你检查了遥控器,你的文件消失了。

如果您将原始树重新定位到远程,那么您的文件应该会回来。您也可以进行无根据的合并(无根据,因为没有共同的父级)。

找出你的远程名称:
git remote -v
应该返回类似:
your-remote-name https://my-url/something

然后变基:
git rebase --onto master --root your-remote-name/master

如果这不起作用,请阅读关于git reflog返回您最近的提交以找到包含您添加的文件的提交。(假设您不再拥有要添加的文件的副本)


推荐阅读