Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A shell script for pushing git tracked changed files to a remote host by FTP - fork to support netrc, latest git and add a few more features

branch: master

This branch is 0 commits ahead and 0 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time

README of git-ftp

(c) René Moser, <>, 2010
This application is licenced under GNU General Public License, Version 3.0

Use git-ftp to upload only the files to a FTP server, which have changed
since the last upload. This saves time and bandwith.

I use git-ftp for my script based projects, mostly PHP. Most of the low-cost
web hoster does not provide SSH nor git support, only FTP.

That is why I needed a easy way to deploy my git tracked projects. Instead to
transfer always the whole project, I thought, why not only transfer the files
which changed since the last time, git can tell me those files.

Even if you are playing with different branches, git-ftp knows which files
are different. No ordinary FTP client can do that.

Known Issues
 - Git Submodules are currently not supported. I am working on it.
 - See for open issues

See INSTALL file.

    $ cd my_git_tracked_project
    $ git ftp push --user <user> --password <password>

For interactive password prompt use:
    $ git ftp push -u <user> -p

Pushing the first time needs option --force or -f because it will not find any deployed sha1 hash

Testing and Help
For testing mode use --dry-run alias -D
	$ git ftp push --dry-run -u <user> -p

For more options see:
    $ git ftp help

Using Defaults
Setting defaults for a git project in .git/config
	$ git config git-ftp.user john
	$ git config git-ftp.url
	$ git config git-ftp.password secr3t

After setting defaults, push to is as simple as
	$ git ftp push

Using Scopes
For using defaults for different systems, use the so called scope feature.
	$ git config git-ftp.<scope>.<(url|user|password)> <value>

Here I set the params for the scope "foobar"
	$ git config git-ftp.foobar.url
	$ git config git-ftp.foobar.password simp3l

Push to scope foobar alias using password simp3l
	$ git push -s foobar

Because I didn't set the user for this scope, it takes the user "john" as set before in defaults.

Don't hesitate to use GitHub to improve this tool. Don't forget to add yourself to the AUTHORS file.
Something went wrong with that request. Please try again.