[Git] Git で管理しているフォルダの中身を簡単にFTP(FTPS)でアップロード(同期)できる git-ftp の使い方(Mac)
Git で管理しているにも関わらず、サーバーへのアップロードなどを手動で行っていると、手間がかかるだけでなく、アップロードや削除もれなどというミスにつながることがあります。
git-ftp を使うと FTP クライアントなどを使うことなく、Git でコミットしたファイルをサーバーへアップロードできます。(ファイルの削除を行った場合はそれも反映してくれます。)ミスを防いだり、作業を効率化することができますね。大変便利です。
git-ftp を使って Git で管理中のフォルダとサーバーを同期する方法と、SouceTree での同期方法をまとめました。
◆ git-ftp/git-ftp: Uses Git to upload only changed files to FTP servers.
git-ftp を導入する
※この記事では、Homebrew から git-ftp などをインストールしています。
Homebrew のインストール方法はこちらの過去記事「Git をインストールする手順[ 2 ] – Homebrew からインストールする 」のなかでまとめています。
curl をインストール
git-ftp を使うのに curl という HTTP や FTP に関する機能をつかえるコマンドが必要なため、Homebrew からインストールします。オプション付きでインストールした方がよいようです。(参考:How to use git-ftp)
curl をインストールするにはターミナルで以下のように入力します。
brew install curl --with-ssl --with-libssh2
curlの使い方
git-ftp をインストール
以下のコマンドをターミナルで入力すると git-ftp のインストールが開始されます。
brew install git-ftp
git ftp と打ち込んで以下のように返ってきたらインストール成功です。
git ftp ↓(インストールできてたら以下のように返ってくる) git-ftp <action> [<options>] <url>
git-ftp でサーバーと同期する
デスクトップに置いた Git 管理中の「example-git」フォルダを例として、サーバーと同期する手順を書いていきます。
初期設定
git-ftp を使うために最初にサーバーと接続し初期設定を行う必要があります。
example-git フォルダへ移動するため、以下のコマンドを入力します。
cd ~/Desktop/example-git
次に、以下のコマンドを入力し初期設定をします。< > 内はサーバーの情報が入ります。
git ftp init -u <ユーザー名> -p <パスワード> ftp://<ホスト名(アドレス)>/<同期するディレクトリへのパス>
There are no files to sync.
Last deployment changed to .
と表示されたら最初の同期が成功し、指定したサーバーのフォルダにログのファイルができています。
サーバーへファイルをアップロードする
ローカルの example-git フォルダにファイルなどを入れコミットします。
ターミナルに以下のコマンドを打ち込みます。(初期設定の時のコマンドの init が push になったもの)
git ftp push -u <ユーザー名> -p <パスワード> ftp://<ホスト名(アドレス)>/<同期するディレクトリへのパス>
Last deployment changed to とコミットログが表示されたらアップロード完了です。
サーバーにファイルがアップロードされています。
この後もまたコミットしたら、上記のコマンドを打ってサーバーと同期していくという感じです。
サーバーとの同期を SouceTree から行う
私はターミナルでコマンドを打つのが苦手なので SouceTree を使用していますが、コミット&プッシュしたついでにサーバーとの同期も SouceTree から行いたいです。
初期設定はターミナルから行わなくてはいけませんが、同期する処理はカスタムアクションを登録することで SouceTree から行うことができます。
!注意点
SouceTree で git-ftp を使う場合は、SouceTree で使用する Git と git-ftp が同じ場所にないとエラーになってしまいます。
前回の記事「[Git] SourceTree で使用する Git を Homebrew でインストールした Git へ変更する方法(Mac)」の方法でシステムの Git を使うように変更しておきましょう。
コマンドをシェルスクリプトにする
カスタムアクションはシェルスクリプトで登録するため、まずは、git ftp push のコマンドをシェルスクリプト化します。
テキストエディタで、「git-ftp-push(←任意の名前).sh」というファイルを作り以下のように記入します。””の中にはサーバー情報を記入します。
#!/bin/sh #↓FTPユーザー名を記入 USERNAME="" #↓FTPパスワードを記入 PASS="" #↓ホスト名(アドレス)を記入 FTP="" #↓同期する同期するディレクトリへのパスを記入 FOLDER="" git ftp push -u $USERNAME -p $PASS $FTP$FOLDER
このままだと実行できないのでこのファイルのアクセス権を変更します。ターミナルで以下のように打ち込みます。
chmod u+x ~/Desktop/example-git/git-ftp-push.sh
これでシェルスクリプト化できました。
カスタムアクションを登録する
SouceTree を開いて先ほど作ったシェルスクリプトをカスタムアクションに登録します。
画面上部ツールバーから環境設定を開きます。
以下のウィンドウが表示されるので、「カスタムアクション」のタブを開き、下の方にある「追加」ボタンをクリックします。
「メニューキャプション」に適当な名前を入力し、「実行するスクリプト」で先ほど作ったシェルスクリプトを選択します。
「OK」ボタンをクリックして登録完了です。
カスタムアクションでサーバーとの同期を行う
管理中のフォルダで追加や変更があって、コミットしたとします。画面上部ツールバーの「操作」から「カスタムアクション」を選択し、先ほど登録したメニュー名をクリックします。
SouceTree でエラーなどがでていなければ、これでサーバーとフォルダが同期されているはずです。シェルスクリプトの登録などは少し面倒な気もしますが、一度やっておけば後の作業がだいぶ楽になりますね。
No Comments & Tracbacks