gpt4 book ai didi

linux - 使用 git 通过 U 盘在 Windows 和 Linux 之间传输数据

转载 作者:可可西里 更新时间:2023-11-01 10:44:30 24 4
gpt4 key购买 nike

我第一次尝试使用 git,以便在工作的 Windows 计算机和家里的 Linux 计算机之间传输我目前正在撰写的学士论文。因为我没有服务器,所以我想使用 U 盘来存储共享存储库。从这个question我知道这应该是可能的。

在 Windows 系统上,我在 USB 内存棒上创建了一个工作存储库和远程存储库,并将工作目录推送到 USB 内存棒。这似乎工作正常。

在 Linux 系统上,我克隆了存储库,进行了一些更改,添加并提交了它们。到目前为止,一切似乎都运行良好。但是当我尝试将更改推送回 U 盘时,我收到以下错误消息:

Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 264 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: error: unable to create temporary file: Operation not permitted
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To /media/usb-stick-sta/git/bachelor
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to '/media/usb-stick-sta/git/bachelor'

/etc/fstab 中,我使用以下选项来安装 USB 内存棒:noauto,user,uid=1000,gid=1000 所以我拥有所有文件,我已经使用 ls -l 验证了这确实是这种情况。只是为了确保我也尝试在该目录中创建一个文件并再次删除它,没有任何问题。

另一个 stackoverflow 问题的答案(不幸的是我再也找不到它)建议在远程存储库上执行 chmod -R g+ws *。它导致了许多错误消息,例如(独立于我是以文件所有者还是以 root 身份执行此操作):

chmod: changing permissions of ‘config’: Operation not permitted

进一步的研究表明这些文件可能是不可变的,所以我尝试了 chattr -i * 导致消息如下:

chattr: Inappropriate ioctl for device while reading flags on config

进一步阅读,我发现并非所有文件系统都支持这些属性。 U 盘格式化为 FAT。

任何帮助将不胜感激。提前致谢。

最佳答案

如果 repo 不是那么大,我会把它打包成一个 tar 或 zip 文件,然后将其复制到 USB 内存棒,然后在另一台机器上解压。为了帮助我解决这个问题,我写了 genbackup脚本。它会创建一个备份 tarfile,其中包含当前日期和文件名中的短主题标签。

如果这太麻烦,请跟踪提交并在一台计算机上的 repo 中执行 git format-patch。将补丁文件复制到 U 盘,然后在另一台计算机上运行 git am

编辑:至于错误,在我看来这是重要的部分;

remote: error: unable to create temporary file: Operation not permitted

Git 想要创建一个临时文件,但由于 EPERM 错误而失败。查看 git 的手册页,搜索“temporary”只给出一个结果:git-unpack-file。不幸的是,该程序的手册页没有指定它试图创建临时文件的位置。但经过一番谷歌搜索后,似乎 git 使用了 TMPDIR 环境变量。检查它是否设置为您有权访问的某个地方。如果它不存在,请将其设置到一个合理的位置,然后重试。

关于linux - 使用 git 通过 U 盘在 Windows 和 Linux 之间传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32102234/

24 4 0