环境
服务器:西部数码虚拟主机
本地系统:windows 10 (LTSC 2019)
软件: Git Bash,gti-ftp (版本1.6.0)
问题
在使用git ftp init
初始化上传代码的时候会出现
$ git ftp init
fatal: Can't access remote 'ftp://dmkt:***@dmkt.gotoftp1.com', exiting...
尝试解决
百度搜索和GitHub的issue都找过,没有找到解决方案。
Can't access remote
意思就是说无法连接,但是电脑上的ftp软件可以正常连接,尝试 windows ftp 命令行连接服务器的 ftp ,出现下面这种情况
连接到 myftp.myhostadmin.net。
220 Ready
远程主机关闭连接。
没有让我输入用户名和密码,过了一会儿就直接关闭连接了。
猜测可能和这个有关,出现原因可能是连接方式应改为主动或者被动,亦或者其他原因,但网上没有关于此问题的解决办法。
尝试跳过初始化直接推送,git ftp push
,得到
fatal: Could not get last commit. Network down? Wrong URL? Use 'git ftp init' for the initial push., exiting...
说没有最后一次提交,提示我去初始化,回到原点, 接下来测试了git ftp catchup
,得到如下
$ git ftp catchup
Last deployment changed from to b8b9d9f5dbf90414557b48105ba082a0f2b0068b.
翻译为:上次部署从B8B9D9F5DBF90414557B48105BA082A0F2B0068B更改。
去ftp软件中看了一下,发现根目录多了.git-ftp.log
文件,内容为b8b9d9f5dbf90414557b48105ba082a0f2b0068b
,表明git ftp
命令是可以正常运行的,再次尝试push
,得到结果
$ git ftp push
No changed files for dmkt.gotoftp1.com/. Everything up-to-date.
和上次push
不一样了,这次提示文件没有变化,表明push
方法可用,和git一样,检测到相同的SHA1值则文件没有被推送。找到解决办法如下
解决办法
在根目录创建.git-ftp.log
文件,手动创建或者使用git ftp catchup
都可以,使用git ftp catchup
需要去ftp上删除.git-ftp.log
文件中的内容,不然无法推送
使用git ftp push
推送,得到下面的提示,就是问你是否忽略并上传所有文件,当然是yes
$ git ftp push
Unknown SHA1 object, make sure you are deploying the right branch and it is up-to-date.
Do you want to ignore and upload all files again? [y/N]: y
接下来就是文件上传过程。