git - 为什么git要删除文件?
问题描述
我不确定这是否可能是一个原因,但前言。为了解决这个问题,我遇到了一个无法从远程仓库中提取的问题,我在一个新文件夹中创建了新的仓库git init
并在此之后设置git remote
了我从源中提取的内容。
关于当前问题:其他开发人员已将更改合并到主分支中,现在我需要将其拉到我的开发分支中。合并后,我发现从主分支拉出后我得到了所有新文件,但我也看到合并删除了我在本地创建的所有新文件......
我想到了一个可能的原因,即在我创建新的 repo 并设置后,get remote
我没有获得历史记录,我不知道为什么,但也许这是一个原因。
我究竟做错了什么?如何解决?
编辑
我正在GitExentions
用作 UI。
与大师合并后,我解决了一些冲突。
EDIT2
根据@RJFalconer 在评论中的建议,最好集中精力解决原始存储库中的问题git clone
,但无论如何我已经做了很多不在远程存储库中的更改。因此,即使我会解决get clone
问题,我也需要以某种方式将我的更改从当前存储库中移出。
解决方案
简短的回答是“它不会删除文件”。除非您明确这样做reset --hard
,否则clean -f
git 不会删除本地结帐中未跟踪的文件
我在一个新文件夹中创建了新的仓库
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
返回您最近的提交以找到包含您添加的文件的提交。(假设您不再拥有要添加的文件的副本)
推荐阅读
- python - 为每个创建的用户创建一个新表
- python - 使用 fsolve 求解一组方程,其中一个是每次迭代都会改变的 sigma 函数
- xcode - 无法让 Crashlytics 处理 dSYM
- javascript - UseState 更新对象数组中的多个属性
- bash - Bash 不会使用循环创建所有文件和目录
- javascript - 使用 fetch js 从 api 获取 json
- javascript - 从 REACT 更新 SQL 帖子
- c - 一个作业的单个进程可以属于多个组吗?
- python - 有没有办法让这段代码在计算机上的负担更少?
- .net-core - 在消费项目构建输出中复制 NuGet 包内容文件