就我而言,我对我的一个文件进行了简单的一行更改,并想提交我的更改,但注意到 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 相同的问题。正如我所提到的,这并不能解决问题,但至少允许我尝试重新创建它或继续我的工作并处理稍后合并。