- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的例子中,我对我的一个文件做了简单的一行更改,并想提交我的更改,但注意到 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,它是在最后一次将远程更改 pull 入我的本地分支后开始出现重复项的提交。提交 B、C、... 是提交 A 之前的提交:
commit A
commit B - git reseat --hard HEAD~1
commit C
,现在我的最后一次提交是没有重复的提交 B。我现在可以再次尝试 merge ,看看我是否会遇到与提交 A 相同的问题。正如我提到的,这并不能解决问题,但至少允许我尝试重新创建它或继续我的工作并处理稍后 merge 。
最佳答案
您将必须检查 Git 2.22.1(Q3 2019)/Git 2.25(Q1 2020)中是否仍然存在该问题,因为 fsmonitor
收集的数据未正确写回-磁盘索引文件(在 Mac、Linux 或 Windows 上)
参见 commit b5a8169 , commit d4c0a3a (2019 年 5 月 24 日)Johannes Schindelin (dscho
) .
(由 Junio C Hamano -- gitster
-- merge 于 commit 10432cc ,2019 年 7 月 25 日)
mark_fsmonitor_valid()
: mark the index as changed if neededWithout this bug fix, t7519's four "status doesn't detect unreported modifications" test cases would fail occasionally (and, oddly enough, a lot more frequently on Windows).
The reason is that these test cases intentionally use the side effect of
git status
to re-write the index if any updates were detected: they first clean the worktree, rungit status
to update the index as well as show the output to the casual reader, then make the worktree dirty again and expect no changes to reported if running with a mocked fsmonitor hook.The problem with this strategy was that the index was written during said
git status
on the clean worktree for the wrong reason: not because the index was marked as changed (it wasn't), but because the recordedmtimes
were racy with the index' own mtime.As the
mtime
granularity on Windows is 100 nanoseconds (see e.g. https://learn.microsoft.com/en-us/windows/desktop/SysInfo/file-times), themtimes
of the files are often enough not racy with the index', so that thatgit status
call currently does not always update the index (including thefsmonitor
extension), causing the test case to fail.The obvious fix: if we change any index entry's
CE_FSMONITOR_VALID
flag, we should also mark the index as changed.
That will cause the index to be written upongit status
, including an updatedfsmonitor
extension.Side note: Even though the reader might think that the t7519 issue should be much more prevalent on Linux, given that the ext4 filesystem (that seems to be used by every Linux distribution) stores mtimes in nanosecond precision. However, ext4 uses
current_kernel_time()
(see https://unix.stackexchange.com/questions/11599#comment762968_11599; it is amazingly hard to find any proper source of information about such ext4 questions) whose accuracy seems to depend on many factors but is safely worse than the 100-nanosecond granularity of NTFS (again, it is horribly hard to find anything remotely authoritative about this question). So it seems that the racy index condition that hid the bug fixed by this patch simply is a lot more likely on Linux than on Windows. But not impossible ;-)
在 Git 2.25(2020 年第一季度)中,fsmonitor 更加健壮,并删除了不应触发的错误 BUG()。
参见 commit 61eea52 (2019 年 11 月 13 日)Junio C Hamano (gitster
) .
(由 Junio C Hamano -- gitster
-- merge 于 commit aec3b2e ,2019 年 12 月 1 日)
fsmonitor
: do not compare bitmap size with size of split indexReported-by: Utsav Shah
Helped-by: Kevin Willford
Helped-by: William Baker3444ec2e ("
fsmonitor
: don't fill bitmap with entries to be removed", 2019-10-11, Git v2.24.0-rc1 -- merge listed in batch #11) added a handful of sanity checks that make sure that a bit position in fsmonitor bitmap does not go beyond the end of the index.As each bit in the bitmap corresponds to a path in the index, this is the right check most of the time.
Except for the case when we are in the split-index mode and looking at a delta index that is to be overlayed on the base index but before the base index has actually been merged in, namely in read_ and
write_fsmonitor_extension()
.In these codepaths, the entries in the split/delta index is typically a small subset of the entire set of paths (otherwise why would we be using split-index?), so the bitmap used by the
fsmonitor
is almost always larger than the number of entries in the partial index, and the incorrect comparison would trigger the BUG().
关于git 无法暂存文件,将所有文件显示为重复但 char 大小写不是问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55423223/
今天我在一个 Java 应用程序中看到了几种不同的加载文件的方法。 文件:/ 文件:// 文件:/// 这三个 URL 开头有什么区别?使用它们的首选方式是什么? 非常感谢 斯特凡 最佳答案 file
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我有一个 javascript 文件,并且在该方法中有一个“测试”方法,我喜欢调用 C# 函数。 c# 函数与 javascript 文件不在同一文件中。 它位于 .cs 文件中。那么我该如何管理 j
需要检查我使用的文件/目录的权限 //filePath = path of file/directory access denied by user ( in windows ) File fil
我在一个目录中有很多 java 文件,我想在我的 Intellij 项目中使用它。但是我不想每次开始一个新项目时都将 java 文件复制到我的项目中。 我知道我可以在 Visual Studio 和
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我有 3 个组件的 Twig 文件: 文件 1: {# content-here #} 文件 2: {{ title-here }} {# content-here #}
我得到了 mod_ldap.c 和 mod_authnz_ldap.c 文件。我需要使用 Linux 命令的 mod_ldap.so 和 mod_authnz_ldap.so 文件。 最佳答案 从 c
我想使用PIE在我的项目中使用 IE7。 但是我不明白的是,我只能在网络服务器上使用 .htc 文件吗? 我可以在没有网络服务器的情况下通过浏览器加载的本地页面中使用它吗? 我在 PIE 的文档中看到
我在 CI 管道中考虑这一点,我应该首先构建和测试我的应用程序,结果应该是一个 docker 镜像。 我想知道使用构建环境在构建服务器上构建然后运行测试是否更常见。也许为此使用构建脚本。最后只需将 j
using namespace std; struct WebSites { string siteName; int rank; string getSiteName() {
我是 Linux 新手,目前正在尝试使用 ginkgo USB-CAN 接口(interface) 的 API 编程功能。为了使用 C++ 对 API 进行编程,他们提供了库文件,其中包含三个带有 .
我刚学C语言,在实现一个程序时遇到了问题将 test.txt 文件作为程序的输入。 test.txt 文件的内容是: 1 30 30 40 50 60 2 40 30 50 60 60 3 30 20
如何连接两个tcpdump文件,使一个流量在文件中出现一个接一个?具体来说,我想“乘以”一个 tcpdump 文件,这样所有的 session 将一个接一个地按顺序重复几次。 最佳答案 mergeca
我有一个名为 input.MP4 的文件,它已损坏。它来自闭路电视摄像机。我什么都试过了,ffmpeg , VLC 转换,没有运气。但是,我使用了 mediainfo和 exiftool并提取以下信息
我想做什么? 我想提取 ISO 文件并编辑其中的文件,然后将其重新打包回 ISO 文件。 (正如你已经读过的) 我为什么要这样做? 我想开始修改 PSP ISO,为此我必须使用游戏资源、 Assets
给定一个 gzip 文件 Z,如果我将其解压缩为 Z',有什么办法可以重新压缩它以恢复完全相同的 gzip 文件 Z?在粗略阅读了 DEFLATE 格式后,我猜不会,因为任何给定的文件都可能在 DEF
我必须从数据库向我的邮件 ID 发送一封带有附件的邮件。 EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Adventure Works Admin
我有一个大的 M4B 文件和一个 CUE 文件。我想将其拆分为多个 M4B 文件,或将其拆分为多个 MP3 文件(以前首选)。 我想在命令行中执行此操作(OS X,但如果需要可以使用 Linux),而
快速提问。我有一个没有实现文件的类的项目。 然后在 AppDelegate 我有: #import "AppDelegate.h" #import "SomeClass.h" @interface A
我是一名优秀的程序员,十分优秀!