node package manager



Synchronize GIT changes via FTP

giftp stands for GIT and FTP

Are you planning to keep your website in GIT repository and upload it to the public hosting by FTP?
Then you may consider this little tool...

It can also be used for any other task that requires sending GIT diff via FTP.


npm install -g giftp


giftp [<config-file>] [<config-name>] [--no-delete]

<config-file> - a JSON file with the connection parameters. If not specified, giftp looks for a file named giftp.json in the current directory.

<config-name> - a config name (if there are multiple configs in the file).

// giftp.json 
  "local": "C:/myrepo/html",
  "remote": "/myserver/public_html",
  "ftp": "",
  "login": "mylogin",
  "password": "mypassword"
// another.json 
  "config1": {
    "local": "~/work/myrepo/html",
    "remote": "/myserver/public_html",
    "ftp": ""
  "config2": {
    "local": "~/work/myrepo/img",
    "remote": "/myserver/public_html/img",
    "ftp": ""

local directory must reside inside the GIT working copy, but don't have to be its root directory.

--no-delete - don't delete remote files. This option is useful if you remove file from version control, but want to keep it on server. This flag can be also passed with the config object as "no_delete": true .

After synchronizing, giftp will place the .giftp file with the latest revision ID in both the local and the remote directories to use it as the "from" revision next time.
This will allow uploads from several working copies.

To manually tweak the "from" revision, you can delete the remote .giftp file and modify the local one.

Calling from your own code

var giftp = require('giftp');{ local: "/local/path", remote: "/remote/path", ftp: "" });