运行 git reset --hard 时,暂存的更改仍然存在。git checkout 和 git stash + git stash drop 也是如此。这是怎么回事?



所以这里有一些背景:我试图使用hg快速导出将存储库从Mercurial移动到git,当我执行最后一步(git checkout HEAD)时,存储库中仍然存在更改。具体来说,它说有4个被删除的文件不应该被删除。

当我尝试以下操作时,没有任何变化:

git reset --hard HEADgit checkout .git stash && git stash drop

我注意到的一件奇怪的事情是,当有人使用这个Mercurial回购时,他们在中间添加了一个git回购T_T。因此,有趣的是,当我运行git checkout HEAD时(但不是当我运行git checkout .时),.git子目录在索引中显示为已删除(奇怪)。每当我运行git reset时,这些更改就会消失,但在无效路径附近会出现一堆错误。

最后,这使存储库处于我第一次运行git checkout HEAD时的状态。(至少git是一致的!)。

当然,将mercurial转换为git的一部分人也经历过这种情况。有人能分享他们在git内部持续变化的经历吗?

这个问题的原因实际上是mercurial存储库中有一个.git目录。

我解决这个问题的方法是在进行快速导出转换之前,使用排除故障目录的文件映射运行hg convert

希望这对将来的人有所帮助!

最新更新