【发布时间】:2019-08-20 17:40:45
【问题描述】:
在我的例子中,我对我的一个文件进行了简单的一行更改并想提交我的更改,但注意到 commit -am "" 没有添加/提交文件。
发出 git ls-files --stage 后,我可能看到项目中的所有文件都显示为重复文件。这是其中一个文件的示例
100644 6314bd3f89d1b794c6d8c0fb9bb4aa492e2d510a 0 SquirrelFoH/Squirrel.FoH.ViewModels/UserLoginViewModel.cs
100644 6314bd3f89d1b794c6d8c0fb9bb4aa492e2d510a 0 SquirrelFoH/Squirrel.FoH.ViewModels/UserLoginViewModel.cs
有趣的是,一些显示广告重复的文件根本没有被我修改,但有些仍然显示为重复,正如您在下面看到的那样,大小写不是这里其他 SO 帖子中的问题。
更新
虽然这不能解决我上面描述的问题,但它帮助我使用了git reset --hard HEAD~1,它将 HEAD 指针重置为第二次最后提交,这是有效的提交。我使用上面的--hard 丢弃最后一次提交,因为它对我造成了上述问题。
如果您需要保留这些更改,请改用--soft 将 HEAD 重置为您上次提交之前的提交,并将上次提交中的更改添加到暂存区。
git reset --hard HEAD~1
git reset --hard HEAD~2
git reset --hard HEAD~3
...
上述命令在最后一次提交之前重置 HEAD 指针 1、2、3、... 提交并丢弃之后的任何更改。如果您不想放弃这些更改,请使用--soft 而不是--hard,在这种情况下,这些更改将为您上演。
这就是我的情况。下面,最后一次提交是提交 A,它是在最后一次将远程更改拉入我的本地分支后开始显示重复项的提交。提交 B、C、... 是提交 A 之前的提交:
commit A
commit B - git reseat --hard HEAD~1
commit C
,现在我的最后一次提交是提交 B,它没有重复项。我现在可以尝试再次合并,看看是否会遇到与提交 A 相同的问题。正如我所提到的,这并不能解决问题,但至少允许我尝试重新创建它或继续我的工作并处理稍后合并。
【问题讨论】:
-
我敢打赌,你在 Windows 上,并且文件在 修订树 上重复,大小写不同。
-
我确信在某些 MacOS 特定版本的 Git / 例程中存在一个错误,它将这些重复的条目放入索引中。你是最近第三个提出这种问题的人,虽然我已经找不到另外两个了。如果这是一个错误,
git --version可能会帮助确定 Git 的哪个版本有它。我也很想知道它们是否符合 fsmonitor 资格(请参阅git ls-files文档以获取-f标志)。 -
@torek 你可以通过任何方式帮助解决这个问题stackoverflow.com/questions/55426546/… 我遇到了严重的问题,想知道是否可以恢复丢失的文件
标签: git git-commit macos-mojave git-ls-files