当我删除项目中的几个文件提交,然后尝试从远程执行拉时,“奇怪”的内容开始了期望恢复已删除的项目,因为推送到远程的上一个快照具有所有文件。由于 pull 基本上是 fetch + merge ,所以似乎EGit有一些关于合并策略的已知问题。不过,我配置了fetch,导致了以下的获取规范:
refs/heads/master:refs/remotes/amrtest1/master
Fetch没问题,至少看起来是这样,在远程主分支的本地仓库中创建了新文件夹,我也注意到FETCH_HEAD也在那里。
使用签出的本地主分支,我尝试与远程主机合并...结果是:
我在这里做错了吗?基于所描述的过程,我对恢复状态的期望是否无效?如果是这样,那将是什么样的(恢复状态远程仓库,或者至少将其与现有本地正确合并)?
感谢。
答案 0 :(得分:2)
是的,你的期望是错误的。事实上,在我掌握之前需要多次重读,你相信Git会以某种方式在心理上检测到你不想删除显式删除的文件并在合并操作期间恢复它们。如果你想要恢复文件,你应该恢复删除它们的提交,或者将文件从它们存在的版本复制到当前版本。
最重要的是,如果你对你所谓的“EGit的历史视图”是正确的,这可能意味着你已经设置拉动来执行 rebase 而不是 merge < / em>无论如何。在 rebase 中,大致假设自上次拉取以来的更改应该应用于当前版本的上游。对于其他人来说,这通常更清晰,但如果很多人在那段时间内更改相同或相关的代码,则可能会让人感到困惑或失败。