我有一个 mercurial 存储库,我设法将其置于一种奇怪的状态。我怀疑罪魁祸首是我在 Windows 和 Linuxhg
客户端(在 Windows 机器上使用 WSL 1)上都使用了存储库(即:我磁盘上的同一个文件夹)。我意识到此时全新克隆可能是最好和最简单的解决方案,但我在书签中有一些未推送的工作,我不想丢失它们。我知道我可以导出补丁并稍后在我的新克隆上重新应用它,但我仍然希望有一个更简单的解决方案。
存储库处于这种奇怪的状态:
PS D:\development\DEFAULT\efa> hg status
PS D:\development\DEFAULT\efa> hg status -d | Measure-Object -line
Lines Words Characters Property
----- ----- ---------- --------
101
因此,status
什么也没说,但status -d
找到了 101 个丢失的文件。奇怪的是,Linux 客户端没有看到任何丢失的文件:
lba@One:~/dev/DEFAULT/efa$ hg status -d | wc -l
0
好的,只需通过以下方式恢复update -C
(在 Windows 端):
PS D:\development\DEFAULT\efa> hg update -C
101 files updated, 0 files merged, 0 files removed, 0 files unresolved
updated to "9a390e7aae73: fixed"
1 other heads for branch "default"
然而,文件仍然丢失:
PS D:\development\DEFAULT\efa> hg status -d | Measure-Object -line
Lines Words Characters Property
----- ----- ---------- --------
101
事实上,我可以hg update -C
连续运行多次,它总是声称更新那 101 个文件:
PS D:\development\DEFAULT\efa> hg up -C
101 files updated, 0 files merged, 0 files removed, 0 files unresolved
updated to "9a390e7aae73: fixed"
1 other heads for branch "default"
PS D:\development\DEFAULT\efa> hg up -C
101 files updated, 0 files merged, 0 files removed, 0 files unresolved
updated to "9a390e7aae73: fixed"
1 other heads for branch "default"
更奇怪的是,这些文件似乎确实存在:
PS D:\development\DEFAULT\efa> hg status -d | select -first 1
! build\docker\Dockerfile
PS D:\development\DEFAULT\efa> ls .\build\docker\Dockerfile
Directory: D:\development\DEFAULT\efa\build\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/23/2021 12:29 PM 641 Dockerfile
猜猜这里发生了什么事?