環境
服務器:西部數碼虛擬主機
本地系統: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
接下來就是文件上傳過程。