为什么要使用Git代替FTP的原因:

由于本人菜鸟+穷屌,玩不起VPS和其他大牌的云主机,所以呢就只能在景安(这不是广告。。)申请了免费的虚拟主机,就想着自己玩玩而已,免费的嘛,空间流量什么的就不讨论了,主要觉得比较麻烦的就是代码提交,由于使用的是FTP Server进行代码提交的,所以每次改点东西都得打开filezilla,改的多的就整个文件覆盖,改的少的就打开到相应的文件夹进行选择性的修改,这也就导致了操作烦死了,还有一点就是没有版本管理,一旦出了问题就贼尴尬了,所以就有了使用版本管理工具来连接FTP Server进行版本管理和代码提交;

由于本人工作中用的是SVN,所以起初也是在网上找关于SVN提交后同步到FTP的相关文章,大致是通过利用SVN的HOOK来实现:



但是。。。真心看不懂那啥shell语法,所以换到Git方向,想了解具体SVN提交后同步FTP的同学可以查看下面的文章:

SVN 提交后自动同步到FTP

那接下来就来讲讲我实现的方式: git实现FTP Server代码提交;

使用工具: Git、git-ftp;

  1. 安装git;

    官方下载地址:这有个问题,就是小水管实在是下载速度贼鸡儿慢,常常就停了,最好的方式还是找度娘搜索 git+版本号,会有很多好人会下载后保存到国内云盘中,这速度当然就飞起;官网的,我科学上网也速度贼慢,搞不懂了,有什么好方法还请大神教教;

    安装时可以无脑下一步,没什么影响,如果要看安装教程可以参考:安装git教程

  2. 有需要的话,选择性安装git图形化工具,还有中文包很友好;

    git小乌龟,安装也很简单,可以选择安装路径,其他的默认选项即可;

  3. 安装git-ftp

    git-ftp 的 github 网址

    查看其中的 INSTALL.MD



    顶上一大段主要说的是下载带sftp支持的curl,但实际上新版git装完,git bash里的curl支持sftp;所以就可以直接在 git bash 中执行以下代码安装git-ftp

    curl https://raw.githubusercontent.com/git-ftp/git-ftp/master/git-ftp > /bin/git-ftp
    
    chmod 755 /bin/git-ftp

    应该是将git-ftp文件下载到到git/usr/bin,不知道可不可以直接在github上下载git-ftp到git/usr/bin;

    注意:这块在新win10系统中可能出现以下错误:



    这个是因为系统没有修改Git/usr/bin的权限,找到C:\Program Files\Git\usr文件夹,根据网上搜索到的方式添加完全控制权即可

    安装完之后可以使用$ git-ftp -h

    检测是否安装成功,出现如下图说明安装成功,ctrl + z 关闭;

  4. 创建git仓库

    打开你要上传至FTP的文件夹目录,使用git bash 运行git init,在文件夹中生成一个隐藏的 .git文件夹,包含了该仓库的一些配置,主要的git config

  5. 配置git config中关于ftp的信息



    注意:如果你要同步的文件夹不是FTP的顶层,需在FTP地址中加入相应的文件名 比如 ftp://127.0.0.1/WEB

    接下来将FTP服务的账号密码路径等写入git config中,省得每次都得输入;

    git config git-ftp.url ftp://127.0.0.1/project/dowob
    git config git-ftp.user dev1234
    git config git-ftp.password 1234

    配置完成后git config为:

    如果你只想同步本地目录中的某一个文件夹时,可以这么配置:

    git config git-ftp.syncroot ./dowob/assets   目录根据自己结构定
  6. 提交同步代码;

    接下来就是git的正常使用了,再修改了代码后使用git同步,然后commit,接下来就是最重要的一步,push到FTP服务器上:git ftp push, ** 注意这里不是git-ftp **

    然后就可以去刷新你的页面查看修改情况了;

  7. git ftp 常用命令

    https://github.com/git-ftp/git-ftp/blob/master/man/git-ftp.1.md

  最好是看看上面的连接说的比较详细;

  git ftp init 用于本地有提交,远程ftp url为空,上传所有提交到远程并创建.git-ftp.log

  git ftp catchup 用于远程有内容,本地是空库,在远程创建.git-ftp.log,再git ftp download

  常用

  git ftp pull 拉取(注意:拉取的时候要确保你的当前文件夹是一个git仓库,如果不是,请先执行 git init, 然后修改 。git中的config,添加上 git-ftp的用户名、密码、url等配置)

  git ftp push 推送

总结:

对git使用基本不熟悉,最常用的也就 git clone /笑哭,所以得慢慢熟悉起来,毕竟git是主流的版本管理工具,很有学习的价值,至少现在能用了,不必每次都开FTP软件,还得选择上传的东西,一切都好舒服~~~~

参考文章:

git-ftp 用git管理ftp空间

How to use git-ftp: 使用 git-ftp 管理你的 FTP

使用Git代替FTP进行虚拟主机的代码管理的更多相关文章

  1. hexo自动部署到git、ftp(虚拟主机等)、云服务器的方式

    自动部署很有用,当你写完文章后,直接使用hexo d就可以自动更新你的网站了 部署到git 首先你需要在你的blog下安装git deployer插件:npm install hexo-deploye ...

  2. FTP连接虚拟主机响应220 Welcome to www.net.cn FTP service. (解决的一个问题)

    问题场景: 使用FTP客户端连接虚拟主机时,同样的账号密码在有的网络下可以连接成功,有的网络下却一直连接不上:ftp响应“220 Welcome to www.net.cn FTP service.” ...

  3. git 一般的开发流程中的代码管理

    一般的开发流程中的代码管理 1. 从版本库中下载代码 git clone ssh://wenbin@192.168.1.3:29418/mustang-web 2. 针对某个feature(比如ins ...

  4. Xftp的下载安装,以及如何使用XFtp连接虚拟主机/服务器

    1.下载ftp软件  下载地址: 点我立即下载 2.下载后双击安装  下一步  选择Free for Home/School   然后其他的默认下一步即可 3.打开之前领取的免费一年虚拟主机的网址,登 ...

  5. nginx的基本配置和虚拟主机的配置

    在Nginx配置文件(nginx.conf)中,一个最简化的虚拟主机配置代码如下: 跟Apache -样,Nginx也可以配置多种类型的虚拟圭机:一是基于IP的虚拟主机,二是基于域名的虚拟主机,三是基 ...

  6. wamp配置虚拟主机

    ================================================================= 来源参考一:http://wenku.baidu.com/link? ...

  7. window下phpstudy的nginx配置虚拟主机

    由于很长时间没有配置Apache,虽然说知道怎么配置nginx,但是还是花费了一些时间这次记下来下次直接用 在其他选项文件菜单中->打开配置文件->选择vhosts-conf nginx的 ...

  8. Vagrant安装完lnmp后,配置linux和windows共享文件并配置虚拟主机访问项目

    虚拟机目录下的Vagrantfile文件是vagrant的配置文件,如果想把虚拟机当作一台服务器,可以通过ip访问,需要修改配置文件进行配置. (1)第一步:打开虚拟机目录下的Vagrantfile文 ...

  9. 增加nginx虚拟主机配置文件(conf.d)

    有时候我们按照了nginx后发现配置文件只有一个,/etc/nginx/nginx.conf 所有的配置包括虚拟目录也在此文件中配置, 这样当虚拟主机多了管理就有些不方便了, 这是需要我们把配置文件拆 ...

随机推荐

  1. python基础===Character string

    本文转自:python之Character string 1.python字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串,l Python不支持单 ...

  2. 浅谈linux的死锁检测 【转】

    转自:http://www.blog.chinaunix.net/uid-25942458-id-3823545.html 死锁:就是多个进程(≥2)因为争夺资源而相互等待的一种现象,若无外力推动,将 ...

  3. Oracle 集合

    --合并(UNION.UNION ALL) select * from empwhere ename like '%A%'unionselect * from empwhere ename like ...

  4. HDU 6109 数据分割 并查集,SET

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6109 题意:中文题面 解法:每次都贪心地尝试将尽量多的条件放进当前这组,遇到第一个与已有条件冲突时,就 ...

  5. MySQL的sql_mode解析与设置

    https://blog.csdn.net/hhq163/article/details/54140286 https://blog.csdn.net/ccccalculator/article/de ...

  6. JS怎么刷新当前页面

    JS怎么刷新当前页面 reload 方法,该方法强迫浏览器刷新当前页面.语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从 ...

  7. Leetcode 之Binary Tree Postorder Traversal(46)

    采用广度优先遍历,一个变量记录层数,一个变量记录方向. void traverse(TreeNode *root, vector<vector<int>> result, in ...

  8. jstorm系列-2:入门

    有了基本的概念之后,我们用jstorm来做一点小事情吧 做一个很无聊的事情:给定一个时间戳,输出对应的问候语 规则是:时间戳的十位对应的数字对应不同的时间段,0-2代表早上,3代表中午,4-6代表下午 ...

  9. mysql远程访问cannot connect(10038) 问题解决的过程

    今天用Navicat访问虚拟机上的mysql,无法访问报cannot connect(10038). 首先看是否可以telnet,本机cmd,telnet 192.168.209.128 3306,结 ...

  10. 【笔试题】精选30道Java笔试题解答

    转自于:精选30道Java笔试题解答 精选30道Java笔试题解答 1. 下面哪些是Thread类的方法() A. start() B. run() C. exit() D. getPriority( ...