Git 无法与 Ubuntu → Windows Samba 共享目录一起工作

2023-12-14

我正在运行 Virtual Box Ubuntu VM,在其中设置了 git 存储库。然后我使用Samba创建一个共享文件夹并在smb.conf中进行以下配置

path = /home/allan/git_repo
valid users = allan
read only = no
hide dot files = no

当我导航到适当的网络位置时(\\192.168.65.101\git_repo)我在那里看到了我的所有文件和文件夹,包括我的 .git 文件夹,它似乎包含我需要的所有内容。

如果我导航到 bash 终端 (MINGW64) 中的网络位置,我发现它不被识别为 git 存储库。一个简单的命令,例如git rev-parse HEAD回报fatal: Not a git repository (or any of the parent directories): .git另一方面,向下导航子目录级别会导致某种识别(例如,我可以运行git rev-parse HEAD并得到有效的响应)。不过,有很多功能需要位于上层目录,所以我很困惑发生了什么以及如何解决这个问题。


确保不要在中执行 git 命令.git文件夹本身。

如果应该在父文件夹中执行.git/.

另外,请确保使用适用于 Windows 的最新版本的 Git,因为它有更好的支持\\... path.
也可以看看 ”git 尝试统计//HEAD搜索存储库时,导致 Cygwin 出现巨大延迟".


Git 2.24(2019 年第 4 季度)将认识到,在 Windows 上,现在允许像任何其他目录一样使用 UNC 共享的根级别。

See commit 5cf7b3b, commit e2683d5, commit d17f212 (24 Aug 2019) by Johannes Schindelin (dscho).
(Merged by Junio C Hamano -- gitster -- in commit b57a88a, 30 Sep 2019)

setup_git_directory():正确处理UNC根路径

在文件共享的根目录中工作时(这仅在 Git Bash 和 Powershell 中可行,但在 CMD 中不行),报告当前目录时不带尾部斜杠。

这与 Unix 和标准 Windows 目录不同:两者/ and C:\以尾部斜杠报告为当前目录。

如果 Git 工作树位于那里,Git 还没有做好准备:
虽然它确实设法找到.git目录/文件,它返回顶级目录路径的长度one more比当前目录的长度,以及setup_git_directory_gently()那么会 返回未定义的字符串作为前缀。

实际上,这个未定义的字符串通常指向NUL字节,并不会造成太大伤害。不过,在真正涉及重现的极少数情况下(而且不可靠),报告的前缀可能是 Git 执行路径的后缀字符串。

进一步来说,git-for-windows/git第1320期报道git statusWindows 共享根目录下的 UNC 路径失败。

fatal: Not a git repository (or any of the parent directories): .git

Fix .git/UNC 共享根部的发现

Git 源代码库中一个非常常见的假设是offset_1st_component()对于相对路径返回 0,对于相对路径返回 1 以斜线开头的绝对路径。
换句话说,返回值要么是 0,要么是 dir 分隔符后面的点。

调用时不满足此假设offset_1st_component()例如在 Windows 上的 UNC 路径上,例如”//my-server/my-share".
在这种情况下,offset_1st_component()返回整个字符串的长度(这是正确的,因为剥离最后一个“组件”不会导致 有效目录),但返回值仍然不指向紧随dir分隔器。

这种假设最明显地体现在setup_git_directory_gently_1()函数,我们要在其中附加一个“.git" 组件并简单地假设已经有一个 dir 分隔符。
在上面给出的 UNC 示例中,这种假设是不正确的。

因此,Git 将无法处理 UNC 顶部的工作树 正确分享。

让我们通过专门针对这种情况添加一个目录分隔符来解决这个问题: 发现路径中没有第一个组件并且没有结束 在目录分隔符中?然后添加它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git 无法与 Ubuntu → Windows Samba 共享目录一起工作 的相关文章

  • GIT LFS 跟踪旧数据

    我对 GIT LFS 有一个问题 我的项目达到了我正在跟踪 1 5GB 的 LFS 数据的程度 这比我拥有的数据要多得多 没有 LFS 的所有跟踪内容将为 108MB 我开始调查这个问题 看起来自从我开始重构并移动我的文件以来 git lf
  • 如何在 Visual Studio 代码中的奇点/docker 图像中使用 python 解释器

    我希望能够在 Visual Studio 代码的奇点图像中使用 python 解释器 似乎将 VSCODE 指向 python 解释器的所有选项都涉及直接路径 但在图像中使用 python 需要一个命令 singularity exec p
  • git fetch 的默认远程

    如果我在当地的分支机构not跟踪任何远程分支 我发出命令 git fetch 鉴于我定义了几个遥控器 GIT DIR config 从哪个远程获取 我试图从man page https www kernel org pub software
  • 如果新文件不存在则写入新文件,如果存在则追加到文件

    我有一个程序可以写入用户的highscore到一个文本文件 该文件由用户选择时命名playername 如果具有该特定用户名的文件已经存在 那么程序应该附加到该文件 以便您可以看到多个highscore 如果具有该用户名的文件不存在 例如
  • 撤消 git pull,如何将存储库恢复到旧状态

    有什么方法可以恢复或撤消 git pull 以便我的源 存储库将恢复到执行 git pull 之前的旧状态 我想这样做是因为它合并了一些我不想这样做的文件 但只合并了其他剩余的文件 那么 我想找回这些文件 可以吗 编辑 我想撤消 git m
  • 压缩 git log --graph 输出?

    有没有办法压缩输出git log graph那么它会在视觉上压缩遵循线性历史的提交吗 基本上 我只想查看图中某些分支分歧 合并的点 以获得我的分支结构的顶层 概述 举个例子 如果我有这个 A Z H B G C F D E 我希望它显示类似
  • 关闭 Sublime Text 3.2 中的 git 集成

    如果我想关闭 Sublime text 左侧装订线中的 GIT 集成 又名史莱姆绿线 我只需将其切换为 false 26 show git status false 但是 当在首选项中进行设置时 我收到错误 尝试解析设置时出错 意外的字符
  • git difftool 进行目录比较?

    是否可以使用 git difftool 命令来打开已更改文件和暂存 检查文件之间的目录比较 因此 理想情况下 如果 2 个文件已更改 它们将是唯一显示的 2 个文件 但在目录比较中 我读过关于让 git 并行给出所有文件差异的帖子 所以像
  • 哪些Git命令无法在本地执行?

    当我和同事谈论 Git 时 我告诉他们 一旦本地存储库初始化 只有三个 Git 命令不能在不访问远程存储库的情况下执行 假设origin当然 不在本地计算机上 git fetch http www kernel org pub softwa
  • git receive-pack 以 0000 停止

    我对 git 很陌生 目前正在尝试在 opensuse 上使用 gitolite 和 trac 设置环境 我设法使用来自的脚本迁移旧的 svn 存储库http john albin net git git svn migrate http
  • GIT Rebase 协作的分支?

    阅读本文后 重新设置基点以收集从主分支到我的功能分支的更改是有意义的 Git 工作流程以及 rebase 与合并问题 https stackoverflow com questions 457927 git workflow and reb
  • 将列表值转换为 pandas 中的行

    我有数据帧 其中一列具有相同长度的 numpy ndarray 值 df list 0 Out 92 array 0 0 0 0 29273096 0 30691767 0 27531403 我想将这些列表值转换为数据框并从 df iloc
  • gnutls_handshake() 失败:握手失败 GIT

    一切都工作正常 但突然我收到错误 致命 无法访问 https 电子邮件受保护 cdn cgi l email protection name repo name git gnutls handshake 失败 握手失败 我在我的计算机和 E
  • 为什么 git-cherry pick 没有说要提交什么?

    我对以下问题进行了很多搜索 但无法获得任何实质性信息 我创建了一个临时分支 202116 并尝试对 gerrit 202116 进行挑选 并收到以下消息 为什么我无法挑选此提交以及为什么会收到此错误 lt gt git fetch ssh
  • 如何在 Mac OS X 10.9 上安装和使用最新的 Git?

    我从 sourceforge 下载了 Git 2 4 3http git scm com download mac http git scm com download mac对于我的 Macbook Pro OS X 10 9 5 然后安装
  • Git 分支名为 origin/HEAD -> origin/master

    我对 Git 还很陌生 但仍在掌握它的窍门 我最近刚刚开始与分支机构合作 遇到了一些问题 我有两个开发系统 一个 Ubuntu 桌面和一个 MacBookPro 我在新的环境中做了很多工作organizationsUbuntu 系统上的分支
  • “KMeans”对象没有属性“k”

    我使用 Yellowbrick 包绘制数据集的肘部曲线 以使用 KMeans 作为模型找到数据集的最佳簇数 我正在使用 Scikit learn KMeans 和 Yellowbrick kelbowvisualizer 函数 生成了肘部曲
  • 在字符串内打印单引号

    我想输出 XYZ s ABC 我在Python IDLE中尝试了以下3条语句 第一条和第二条语句输出 a before 带打印功能的第三条语句不输出 before 作为 Python 新手 我想了解为什么 之前输出 在第 1 条和第 2 条
  • 为什么当循环数变大时,设置的打印值会被排序?

    它是python 3 8 当输入10时 打印是随机的 但是当输入900时 打印的顺序与 print sorted s 相同 import random s set for i in range int input loop nums n v
  • git jenkins 中未找到存储库

    我正在使用 jenkins 2 64 并安装了最新的插件 我试图在 jenkins 中设置 git 存储库并给出凭据 但给出错误无法连接存储库 状态代码为 128 Cloning repository https github com so

随机推荐

  • 如何使用 BeautifulSoup4 删除 XML 声明

    我有一个 XHTML 文件 其结构如下 我正在使用 BeautifulSoup 并且想从文档中删除 XML 声明 所以我的内容如下所示 我找不到获取 XML 声明以将其删除的方法 据我所知 它似乎不是 Doctype Declaration
  • Android从资产文件夹共享音频文件

    我无法共享资产中的音频文件 每个应用程序都表示无法发送文件 将输入流转换为临时文件的方法 public File getFile String Prefix String Suffix throws IOException File tem
  • iTextSharp RenameField 错误?

    我正在尝试重命名子类化的复选框 假设复选框的名称是 MyForm Check1 page0 当我跑步时 reader AcroField RenameField MyForm Check1 page0 MyForm Check1 newNa
  • PHP 将关联数组中的键值存储到简单数组中

    我无法解决这个问题 任何帮助都会GREAT 我有一个数组 stores 其结构如下 Array 0 gt Array id gt 123 name gt Store A 1 gt Array id gt 345 name gt Store
  • iPad 模态视图控制器类似于 Mail.app?

    如何在 iPad 应用程序中创建类似于 Apple 网站上显示的模式窗口 以便在 Mail app 中撰写消息 Example http dl getdropbox com u 413086 mail type 20100225 jpg T
  • 如何在Wordpress中获取菜单项?

    我想获取我的 wp 主菜单的项目 我尝试了一些代码 但它们都只返回空白页 我不知道必须使用哪种方法 也不知道是否需要在我的页面中包含任何其他页面 有没有办法直接从数据库获取菜单项而不使用 wp 方法和函数 我暂时无法理解wp的表结构 所以我
  • 使用密封类或 Moshi 接口时无法为类创建转换器

    我正在尝试从服务器解析 json 数据 它具有动态键 因此我尝试拥有一个父类 该父类具有每个特定节点的共享键和子类 我使用 Retrofit 和 Moshi 编写了 kotlin 代码 但它不起作用 我尝试使用密封类和接口 但没有成功 实际
  • 您可以将 @Autowired 与静态字段一起使用吗?

    有什么方法可以使用 Autowired与静态字段 如果没有 还有其他方法可以做到这一点吗 简而言之 不 您无法在 Spring 中自动装配或手动装配静态字段 您必须编写自己的逻辑才能做到这一点
  • Java - 使用管理员权限执行 exe [重复]

    这个问题在这里已经有答案了 我目前正在开发一个学习工具 其中组合了几个便携式系统管理工具 主要是 sysinternal 工具 我有一个带有 JButton 的简单框架 我想做什么 除了我的java文件之外 我还有一个exe文件 例如 让我
  • 应用程序请求未显示

    我的应用程序中有一个地图活动 我正在尝试请求其位置权限 但请求权限未显示 我不知道为什么 这是我的完整代码 public class MapsActivity extends FragmentActivity implements OnMa
  • Seaborn - 类型错误:位置 0 处的对象类型无效

    我有一个数据框 如下所示 df g fcl head Out 47 month year producttype fpd 30 fpd 90 fstpd 90 4 2020 01 FCL 70 0 10 0 10 0 11 2020 02
  • 根据 Swagger 定义验证 REST 消息

    我在 IBM Integration Bus 工作 发现自己需要验证收到的消息 由于 IIB 不支持这方面的任何类型的验证 我想知道是否有任何外部库可以为我验证这些消息 到目前为止 我发现了这个https github com swagge
  • WebAPI HttpContext 缓存 - 有可能吗?

    我在常规 MVC 控制器中执行了以下操作 public ActionResult GetCourses List
  • 什么情况下我们可以使用css * 选择器?

    什么情况下我们可以使用css 选择器 选择器有多大用处 是否只是为了重置CSS或破解 margin 0 padding 0 或者它还有其他有效的有用用途 有没有办法使用 选择器来优化 css 使用 选择器 所有浏览器都支持吗 当您想要表达存
  • Android SQLite:更新语句

    我需要在我的应用程序中实现 SQLite 我按照这个教程进行操作 在 Android One 中创建和使用数据库 一切正常 我插入了 1 行 5 列 现在我只想更新 1 列的值 其他列保持不变 本教程中有一种更新方法需要所有参数 但是 我只
  • SQL - UTF-8 到 varchar/nvarchar 编码问题

    问题背景 我从网站接收响应数据 格式为 json 并采用 UTF 8 编码 json 的 body 属性具有 base64binary 类型的值 我将其作为 nvarchar 存储在 ms sql server 上 当转换为 varchar
  • 如何在 Selenium WebDriver 中滑动{move}滑块

    如何在水平进度条上滑动滑块 网址 http jqueryui com slider 我尝试滚动滑块 但它对我不起作用 我使用Java的代码如下 public class TestClass public static void main S
  • 装饰器图案混乱

    我无法确定我是否以正确的方式使用装饰器模式 假设我正在开发一个控制台应用程序 在此应用程序中 我定义了一个简单的 IConfigPathProvider 接口 它将提供某个类的配置文件路径 public interface IConfigP
  • 轴对齐边界框和三角形的分离轴测试会产生不正确的结果 (3D)

    我正在做三角形到 AABB 相交测试 我从以下位置获取此示例代码实时碰撞检测作者 克里斯特 埃里克森 作者在给出示例之前在书中所说的内容与示例不同 因此我不确定如何测试其余的轴 a01 a22 Test 九个轴由两者的边组合的叉积给出 Te
  • Git 无法与 Ubuntu → Windows Samba 共享目录一起工作

    我正在运行 Virtual Box Ubuntu VM 在其中设置了 git 存储库 然后我使用Samba创建一个共享文件夹并在smb conf中进行以下配置 path home allan git repo valid users all