Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在windows和linux之间使用相同的git存储库会导致额外的提交_Linux_Windows_Git_Github_Version Control - Fatal编程技术网

在windows和linux之间使用相同的git存储库会导致额外的提交

在windows和linux之间使用相同的git存储库会导致额外的提交,linux,windows,git,github,version-control,Linux,Windows,Git,Github,Version Control,我有一个NTFS分区,其中包含我的数据,在两个操作系统之间共享。我正在双引导Linux和Windows。我有一个使用Linux开发了一段时间的存储库,一切都很好,直到我尝试在windows上打开存储库。我注意到我有一些未老化的变化,尽管我什么都没有改变。如果我提交它们并从Linux打开存储库,我会有另一组未老化的更改,并且循环会继续。提交出现的更改时,会列出所有跟踪文件的模式更改[some]=>[some other][文件名] 我看到一些人说,在不同的操作系统之间共享存储库不是一个好主意,但没

我有一个NTFS分区,其中包含我的数据,在两个操作系统之间共享。我正在双引导Linux和Windows。我有一个使用Linux开发了一段时间的存储库,一切都很好,直到我尝试在windows上打开存储库。我注意到我有一些未老化的变化,尽管我什么都没有改变。如果我提交它们并从Linux打开存储库,我会有另一组未老化的更改,并且循环会继续。提交出现的更改时,会列出所有跟踪文件的模式更改[some]=>[some other][文件名]

我看到一些人说,在不同的操作系统之间共享存储库不是一个好主意,但没有说明原因。有人能解释一下为什么会发生这种情况,如果可能的话,不使用其他存储库也能解决吗


是的,如果这有什么不同的话,我正在使用Github来托管repo。

Git将有关工作树中文件的信息存储在索引中。索引中存储的部分数据是关于每个文件的设备和inode的信息。此信息因操作系统而异,因为不同的操作系统对其设备的编号不同。因此,在操作系统之间共享工作树至少会导致在切换操作系统后运行git status或某些其他命令时需要重新读取所有文件

此外,Linux在文件系统中保留可执行权限,而Windows则不保留。因为NTFS是Windows文件系统,所以它不维护可执行权限。Linux只能假设每个文件都是可执行的,因此您的提交会导致许多无法有效执行的文件被标记为可执行文件。这就是权限似乎发生变化的原因

一般来说,NTFS对于Linux不是一个好的文件系统。您最好使用UDF文件系统,它可以在Linux和Windows上工作,但可以保留和使用POSIX权限


如前所述,您在跨操作系统共享工作树时会遇到问题。UDF可以使其正常工作并避免当前切换权限的问题,但它仍然不是推荐的解决方案,您应该避免它。

Git将有关工作树中文件的信息存储在索引中。索引中存储的部分数据是关于每个文件的设备和inode的信息。此信息因操作系统而异,因为不同的操作系统对其设备的编号不同。因此,在操作系统之间共享工作树至少会导致在切换操作系统后运行git status或某些其他命令时需要重新读取所有文件

此外,Linux在文件系统中保留可执行权限,而Windows则不保留。因为NTFS是Windows文件系统,所以它不维护可执行权限。Linux只能假设每个文件都是可执行的,因此您的提交会导致许多无法有效执行的文件被标记为可执行文件。这就是权限似乎发生变化的原因

一般来说,NTFS对于Linux不是一个好的文件系统。您最好使用UDF文件系统,它可以在Linux和Windows上工作,但可以保留和使用POSIX权限


如前所述,您在跨操作系统共享工作树时会遇到问题。UDF可以使其正常工作并避免当前切换权限的问题,但它仍然不是推荐的解决方案,您应该避免它。

谢谢,不幸的是,UDF不是一个选项。但是考虑到你所说的,我可以阻止git跟踪某个操作系统(例如Windows)中的权限更改吗。但考虑到您所说的,我可以阻止git跟踪其中一个操作系统(例如Windows)中的权限更改吗。