首页 > 解决方案 > 如何阻止 OneDrive 在 Windows 上下载 git.exe?

问题描述

我在 Windows 上使用 Git 有一段时间了,但最近更改了设置并得到了这个。

在 Git Bash 的几乎每个命令上(也在 PowerShell 和 Github Desktop 上)我得到

git.exe is being downloaded on OneDrive

(翻译可能不完全一样)

最近更改的设置是将我的存储库移动到 OneDrive 文件夹,以便在两个会话之间同步它们:即工作桌面和远程虚拟机。

我可以看到这可能并不理想,但它确实对我有用,因为我在两个会话上都有相同的设置,并且真的不习惯做很多提交-推-拉。这里不是主要话题,但请随时发表评论。

(编辑):在阅读解决方案后,还有其他方法可以设置不会与 Git 内部结构混淆的同步。而是寻找那个。谢谢。

无论如何,奇怪的是通知只发生在远程虚拟机上,而不是桌面上。

我在 repos 中看到了一些关于某些文件的通知,然后我将其归因于 OneDrive 对我移动文件的每一次移动都很多管闲事。但是后来我也看到了我不知道的文件,并且总是git.exe附加到通知中。

在第一种情况下,我尝试调低 OneDrive 的通知。有人可能会说微软确实有不允许用户设置通知的背景,所以我还在寻找。

谢谢。

标签: windowsgitonedrive

解决方案


大多数文件同步工具(如 OneDrive 和 Dropbox)通过逐个文件同步数据文件来操作。如果您正在处理单个文字处理文档或电子表格,这是一种很好的方法。但是,当您使用 Git 存储库时,它就不那么好了。

在分支之间更改或提交时,Git 会同时更改并创建大量文件。为了正确同步,所有创建的文件必须以类似的顺序写入:必须写入所有 blob,然后是树,然后是提交,然后可以更新 refs。如果您不按顺序执行此操作,您的存储库可能会损坏,因为您可以拥有引用不存在的对象(或引用不存在的其他对象的对象)的分支。

此外,这些工具最终可能会删除您希望在工作树中拥有的文件或重新创建您没有的文件。所以总的来说,您不想使用这些工具之一同步任何 Git 存储库。

您可以编写一个捆绑文件git bundle并同步它,或者您可以使用rsync它来同步存储库,前提是它在您这样做时处于空闲状态(未被修改)。请注意,如果您同步工作树,当您将其同步到新机器时,Git 将需要刷新所有文件,而且 Git 不会尝试防御有权访问工作树的不受信任的用户。

通过 OneDrive 同步您的 Git 安装本身也不是一个好主意,这听起来可能正在发生。相反,在每台机器上独立安装 Git for Windows,不要尝试同步它。OneDrive 应具有可让您控制同步内容的配置选项。


推荐阅读