现在开发的项目基本都是Linux下的项目,开发机上基本都没装图形界面,而且我自己日常使用的系统还是以Windows为主,所以很多时我是通过挂载Linux目录到Windows进行开发的,在Windows下使用图形化的git管理工具和IDE开发起来比较爽。但要这样开发要解决一下问题才能正常使用,下面对这些遇到的问题进行解决记录

在Windows上访问Linux目录

要在Windows访问Linux的目录有好几种方法,我用过的有如下几种:

  • 通过IDE自身的挂载功能
  • 在Linux安装Smb服务,然后在Windows访问共享目录
  • 通过sftp协议来挂载目录

IDE的方式这里不详说,以前用过觉得不太好用,所以我主要用下面的两种。

如果论体验最好,我个人觉得是Smb的方式是最好。毕竟Smb协议是Windows自家的协议,所以用起来基本不会出什么问题,但有个麻烦的地方是Linux那边必须装Smb服务,还要做一些配置,我的主要测试服务器就弄了Smb服务,但如果每台Linux服务器都这样弄就很麻烦了,还要记住什么时候把服务停了以免泄露的问题就更麻烦了。所以除了经常用到自己的测试服务器外,我一般是通过sftp协议来挂载。

sftp挂载的方式,我之前用的是 sshfs-winhttps://github.com/winfsp/sshfs-win) 这个开源项目来进行挂载,因为原来在Linux用的sshfs命令来挂载,在Windows下好自然就去搜sshfs的Windows版本了。挂载也是能成功的,我用了很长一段时间,但是用这个挂载有个很坑的问题,会有几率导致文件管理器卡死,即使用最新的版本也是会这样,不知是这个开源项目有问题,还是我的电脑有问题。以前还用过一个红色图标的,忘记是什么软件的来挂载sftp目录,但记忆中那个也是不好用,很容易就卡死。直到我发现上司使用一款叫**RaiDrive(https://www.raidrive.com)**软件来挂载sftp目录。这个软件是免费和收费都有的,很好的是免费版已经支持sftp挂载。虽然不是开源的,但稳定性是我用过这么多挂载sftp目录的软件里面最好的,它还能通过很多其它协议来挂载目录,不过我暂时没用过。用这个软件来挂载Linux的目录是暂时我用过比较理想的方式。

在Windows管理Linux目录下git项目遇到的坑

首先要说明一下这样做的好处,因为乌龟(TortoiseGit)太好用了,在Linux那边用命令行操作虽然也不是不行,但一个是自己不是很熟练,二个确实查看日志和对比文件之类也没那么直观,在Windows上图形界面看舒服很多。但如标题所说,是有些问题的。

一个是速度的问题,因为目录是通过sftp协议挂载的,所以TortoiseGit去遍历更改会比直接在Linux上慢,如果git本身跟踪了很多文件,那这个问题会比较麻烦。所以Linux和Windows之间的网络越快越好。

报错

在原来的电脑用得好好,但在我的笔记本上,使用TortoiseGit查看Linux目录下的项目,居然会报错,报的是Could not get all refs. libgit2 returned: corrupted loose reference file 错误,神奇的是旧电脑并不会报错,想来想去感觉是TortoiseGit版本的问题,所以在笔记本上把原来的TortoiseGit删掉,装回旧版TortoiseGit问题解决,我装的旧版版本是**TortoiseGit 2.5.0.0 **至于依赖的git的版本,没要求。

文件已更改误报

在Linux上执行git status没有任何文件修改,但在Windows上查看,却发现很多文件的状态都是Modified,而且对比文件却什么改动都没有。直觉感觉应该是换行符的问题,因为Linux默认是\n,而Windows默认是\r\n,估计是git帮做了一些转换。上网查了一下,有些参数可以禁用转换,通过右键菜单选择 **ToroiseGit->Settings->Git->Edit global .gitconfig **打开配置文件,然后加上如下配置

1
2
3
4
[core]
autocrlf = false
filemode = false
safecrlf = false

其中除了禁止换行符的转换外,也禁止了因为文件权限不一样导致提示文件已的情况,因为Windows下的文件权限对不上Linux上的权限。配置完应该就没问题了,如果还是提示没改的文件已修改,要看看项目下 **.git/config **配置中是否有上面的配置,因为本地配置会覆盖全局配置