ローカルファイルをリモートGitリポジトリに同期する

ローカルファイルをリモートGitリポジトリに同期する

私のgitリポジトリは企業サーバーのLinuxにあります。私はssh私のLinuxボックスに行き、そこからファイルを編集しました。

質問

サーバーに正しく接続されるまで、これはうまく機能します。接続が遅いか存在しない場合は、ジョブにアクセスできず、ジョブを完了することもできません。

潜在的なソリューション

おそらく、Linuxサーバー上のファイルをローカルコンピュータディスクにコピーしてから、ローカルファイルの変更を受け取り、それをリモートサーバーにミラーリングするスクリプトを実行できます。

  • 私はGitを使用しています。すべてのソリューションにはgitファイルも含める必要があります。
  • 接続が失われた場合はローカルファイル操作を続行できる必要があり、接続が確立されると、スクリプトは変更をリモートサーバーにミラーリングします。
  • 私のコンピュータはMac OSX Lionを実行します。

答え1

質問の表現方法で見ると完全にはわかりませんが、非分散バージョン管理システム(svn、csvなど)から分散バージョン制御システム(gitなど)に移行するときはそうです。 、問題が発生する可能性があります。

Gitで好きな機能を無料で入手できるという事実が明らかになりました! gitリポジトリを使用したいコンピュータに複製し(git clone <remote-repo>)、うまくいったら(コード、gitの追加、gitコミット、リンス、繰り返し)、作業が終わったらリモートリポジトリに戻し、ネットワーク経由でうまくいきます。接続(git push origin masterまたはデフォルト値を使用しない場合にリモート/ポイントが呼び出される名前)。 Gitダウンロード1いっぱいデフォルトでは、すべての履歴を含むリポジトリのコピーが作成されるため、インターネットに接続していなくても問題はありません。インターネットが復元されると、リモートコンピュータと作業を継続して同期できます。

すべてのコミットを自動的にプッシュする方法を探している場合は、次の点を確認してください。子フック。コミット後にフックが欲しいものかもしれません。.git/hooksgitリポジトリのディレクトリに移動してファイル名をpost-commit.sampleに変更するpost-commitか、ファイルを作成して実行可能であることを確認してください(chmod +x post-commit存在しない場合)。これで、このスクリプトに入力した内容はすべて送信後すぐに実行されます。たとえば、次のようになります。

#!/bin/sh
git push origin master

post-receiveリモートシステムのフックを使用して、ローカルストレージからプッシュが受信されるたびに特定の操作を実行することもできます。

編集する:コメントで「手動プッシュは機能しません」と述べましたが、gitはSSH経由のプッシュをサポートしています。これはおそらくサーバーを管理する方法です。そうでない場合は、FTP経由でプッシュすることもできます(戦率)やHTTP [S]を含む他のプロトコル(サーバーが正しく設定されている場合)おそらくこのようにgitを使用することを検討する必要があります。なぜなら、それがまさにこの目的のために設計されているからです。

答え2

正しい方法は、サーバーから引っ張ったり押し出すことです。問題はこれをどのように自動化するかである。さて、ちょっとした作業で、ファイルが変更されるたびにサーバーの別のブランチに自動的にプッシュされるものを一緒に作成できますか?

関連情報