Git Push into Production(FTP)


130

FTPサーバー上でGITリポジトリを本番環境にプッシュする簡単な方法があるかどうか知りたいのですが。ありがとう

回答:


162

最近Git wikiに追加されたツール:

RenéMoserによるgit-ftpは、Gitの方法でFTPを実行するための単純なシェルスクリプトです。git-ftp.shを使用して、最後のアップロード以降に変更されたGit追跡ファイルのみをFTPサーバーにアップロードします。これにより、時間と帯域幅を節約できます。異なるブランチで遊んでも、git-ftp.shはどのファイルが異なるかを認識しています。通常のFTPクライアントはそれを行うことができません。

Edward Z. Yangによるgit-ftpは、FTPを介してGitリポジトリにファイルをアップロードし、新しいファイルのみを転送し、古いファイルを削除するための、pythonで記述された単純なスクリプトです。


3
git-ftpを使用して、サブディレクトリ(例:html5ボイラープレートの公開フォルダ)だけを指定したftpディレクトリにプッシュする方法はありますか?
ギャング

チームに複数の開発者がいる場合はどうでしょうか。このスクリプトを使用することはまだ可能ですか?
Trilliput 2013

@Trilliput:少し遅れましたが、そうです。ネットワーク上の中間サーバー/ vmは、誰もがプッシュする場所として、そしてgithub.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav

github.com/banago/PHPloyも同様の機能を果たしますが、サブモジュールで動作します。これは、言及されたツールのいくつかが苦労する可能性があると私は思います。
Simon East

git-ftpの主な問題(スクリプトまたはpythonは不明)大きなファイルのチャンクと長いファイルのリストをアップロードするときに試してみました。
indianwebdevil


11

私が見つけたPHPloyに FTP経由でリモートのサーバーにGitのコミットを送信するための素晴らしいツールを。コマンドラインから動作し、PHPで書かれています(さらにサブモジュールの変更を検出します)。

https://github.com/banago/PHPloy

git commit ...
phploy -s staging
phploy -s production

できた!

(免責事項:しばらく使用した後、いくつかのコードパッチと改善を提供して、Windows互換にしました。)


10

MacでTransmitを使用している場合は、次のgit-tranmitスクリプト(https://gist.github.com/379750)をお勧めします。DockSendを使用して、最後に更新されたファイルのみを送信します。DockSendに慣れていない場合は、http: //www.panic.com/blog/2010/11/15-secrets-of-transmit/を確認してください

セットアップ:

  1. cp git-transit / usr / sbin /。
  2. cd / usr / sbin
  3. chmod + x git-transmit
  4. ライブアプリのドロップ送信を設定する
  5. gitリポジトリでgit-transmitを実行します。

1
このスクリプトは、「最後に更新されたファイル」を選択するのがやや不格好です。より洗練されたソリューションについては、このフォークをチェックしてください。
クイックシフトイン

それに加えて、追跡され、コミットされていないファイルのみを送信したい場合があります。これを行う小さなスクリプトは次のとおり
borisdiakur

5

厳密に言えば、それはgitの目的ではありません。ただし、ソースがコンパイルや処理を必要としないものである場合、たとえば、完全にhtmlおよびjavascriptファイルなどで構成されるWebサイトの場合、Webサーバーにリポジトリのクローンを作成し、サーバーから使用git pullしてそれを維持することができます。 -現在まで。注:gitディレクトリなどを非表示にするようにウェブサーバーを設定します。そして、それはセキュリティの懸念の始まりにすぎません。

なんらかのコンパイルまたは処理がある場合は、AntMavenBuildRSBTなどを検討する必要があります。


29
これに関する唯一の問題は、運用サーバーにアクセスできない場合です。つまり、FTPアクセスのみの単純な共有ホスティングである可能性があります。
dodgy_coder

4

Deployhq.comを使用することもできますこれは魅力のように機能します。必要なことは、リポジトリとFTPアカウントを設定することだけです。

現在、次のバージョン管理システムがあります。

Git、Subversion、Mercurial。

リポジトリをホスト

  • GitHub
  • Bitbucket
  • GitLab
  • コードベース

ここに画像の説明を入力してください




1

ここにRubyスクリプトがあります-FTPまたはSSH介したRuby git-deployは、FTPまたはSSH介して変更されたファイルのみをgit repoにアップロードします。

別の答えで述べたように、これは同様のことを行うPythonのgit-ftp.pyスクリプトです。

そして、これがgit-ftpのシェルスクリプトバージョンです。

HerokuおよびAzureサービスと同じように、コマンドを使用してgitリモートを介してカスタムデプロイを設定できるgit-deployと呼ばれるRuby gemプロジェクトもありgit pushます。この場合、FTP経由でデプロイするカスタムメソッドを作成する必要がある場合があります。本番サーバーへのSSHアクセスがあることを前提としています。


0

コードを本番環境に導入する場合は、RPMパッケージなどの「インストーラー」を使用してコードをインストールすることをお勧めします。これにより、バージョンにスタンプが付けられ、インストーラーパッケージを利用して、製品コードの更新をサポートできるようになります。Gitは本番環境のインストールをサポートするようには設計されておらず、コード自体の変更を追跡することを目的としています。

いずれにせよ、.RPM(またはEXEなど)をビルドして、本番システムにFTPで転送し、他のパッケージと同様にインストールできます。


5
まあ、gitは実際にはこの目的のためにかなりうまく活用できます。タグをチェックアウトし、チェックアウト後、マージ後などのフックを作成して、必要なインストール手順を処理します。以前はRPMパッケージを使用していましたが、gitに移行した後は、やりすぎでした。
d11wtq

0

それをリモートとして追加すると、それにプッシュできますが、コードを単にプッシュするだけでは不十分であり、作業ツリーとマージする必要があります。最も簡単な方法は、逆方向に進み、サーバー上に作業ツリーを作成し、そこにフェッチしてマージすることです。



0

これを理解するために私は多くの苦労していました。私はこれをさまざまなソース(git-ftpINSTALLgit-ftpUPLOADgit-ftpIssuegit-ftpPUSH)から簡単に行う方法を見つけました。参照用に読むことはできますが、以下の段階的なプロセスについて説明したので、必要はありません。

まず最初に:MAC OSでbrewを使用してgitとcurlをインストールします

brew install git
brew install curl --with-ssl --with-libssh2
brew install git-ftp

次のコマンドを実行します。

git clone https://github.com/git-ftp/git-ftp.git
cd git-ftp
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

gitを使用した更新

git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

セットアップ

git config git-ftp.url YourFtpServerName.Net
git config git-ftp.user FtpUserName
git config git-ftp.password YourPassword

すべてのファイルをアップロード

git ftp init

または、ファイルがすでに存在する場合

git ftp catchup

仕事と配備

echo "Hello StackOverflow" >> index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
git ftp push

エラーがある場合:pathspec 'index.txt'は、gitが認識しているどのファイルとも一致しませんでした。これは、ファイルがまだステージングされていないことを意味するので、ファイルを追加してからコミットしてみてください。

git add application/libraries/index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"

お役に立てれば。


0

FTPloyを試すことができます...

https://ftploy.com

「GitHubまたはBitbucketへの変更をプッシュします。」

「変更をサーバーに自動的にデプロイする」

試してみる無料のプロジェクトが1つあります。私は現在、小さなphpのウェブサイトを使用していますが、かなりうまくいきます。サイトにいくつかのバグがありますが、それはアクティブなプロジェクトなので、少なくとも彼らはそれに取り組んでいます。


1
この回答を早めに投稿しました。FTPloyは完全に「本番対応」ではなく、多くのバグがあります。うまくいきませんでした。私は非常にうまく機能するDeployHQを使用しています。
Dave Thompson

0

MacOSを使用していてGUIが好きな場合は、https://gitftp-deploy.com/を確認してください

これは、Gitを使用して変更を追跡し、変更されたファイルのみをFTPでアップロードする小さなアプリケーションです。

小さなチームで何十もの小さなプロジェクトに月額料金を支払うのが嫌な場合は特に便利です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.