gpt4 book ai didi

linux - git在Windows和Linux之间切换后强制刷新索引

转载 作者:行者123 更新时间:2023-12-02 09:37:30 25 4
gpt4 key购买 nike

我有一个Windows和Linux共享的磁盘分区(格式:NTFS)。它包含一个git仓库(约6.7G)。
如果我仅使用Windows 仅使用Linux 来操作git存储库,则一切正常。
但是每次我切换系统时。 git status命令将刷新索引,大约需要1分钟。运行git status后,如果再次在同一系统中运行git status。仅需不到1秒的时间。这是结果

# Just after switch from windows
[#5#wangx@manjaro:duishang_design] git status # this command takes more than 60s
Refresh index: 100% (2751/2751), done.
On branch master
nothing to commit, working tree clean

[#10#wangx@manjaro:duishang_design] git status # this time the command takes less than 1s
On branch master
nothing to commit, working tree clean

[#11#wangx@manjaro:duishang_design] git status # this time the command takes less than 1s
On branch master
nothing to commit, working tree clean

我想git缓存有一些问题。例如:Windows和Linux都使用 .git/index文件作为缓存文件,但是linux系统中的git无法识别Windows更改的 .git/index。因此,它只能刷新索引并替换 .git/index文件,这会使Windows中的下一个 git statusgit status变得非常慢(因为Windows系统将再次刷新索引文件)。

我的猜测正确吗?如果是这样,我如何为不同的系统使用设置索引文件?我该如何解决这个问题?

最佳答案

您在这里完全正确:

  • 您在这里使用的东西(Git称之为索引,暂存区或缓存)实际上包含缓存数据。
  • 它包含的缓存数据是系统调用的结果。
  • Linux系统返回的系统调用数据与Windows系统返回的系统调用数据不同。

  • 因此,OS开关完全使所有缓存数据无效。

    ... how can I use set the index file for different system?



    您最好不要在这里做任何事情。创建两个不同的工作树,或者甚至创建两个不同的存储库。但是,如果那比其他替代方法更痛苦,请尝试以下想法:

    Git使用的实际索引文件仅默认为 .git/index。您可以通过将 GIT_INDEX_FILE设置为其他(相对或绝对)路径来指定其他文件。因此,您可以拥有 .git/index-linux.git/index-windows,并根据所使用的操作系统来设置 GIT_INDEX_FILE

    一些Git命令使用临时索引。他们通过自己设置 GIT_INDEX_FILE来做到这一点。如果他们以后取消设置,则此时可能会意外使用 .git/index。因此,另一个选择是在切换操作系统时不重命名 .git/index。保持 .git/index-windows.git/index-linux不变,但是在使用时将其中一个正在使用的名称重命名为 .git/index,然后在切换到另一个系统之前将其重命名为 .git/index-name

    再一次,我不建议尝试这两种方法,但是它们或多或少都可能起作用。

    关于linux - git在Windows和Linux之间切换后强制刷新索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59061816/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com