質問: `git push`はftp / sftpを使用してデータをgithub / bitbucketに送信しますか? 私は内部のftp/sftpと基礎となるテクノロジー(完全なnoobアラート!)についてもっと理解しようとしていますコードファイルをgithub(またはwebサービスをホストする任意のコード)git-pushのマンページを閲覧しても、ファイル転送に使用されている基本的なテクノロジーが何であるかについての情報は提供されていなかったようです。他のいくつかのファイル転送を使用できるように、おそらくこれを抽象化していると思いますが、git pushまたはgithubまたはbitbucketにデータを送信するためにgit pushで使用されるデフォルトを教えてください。
回答: gitは、リモートurlがどのように見えるかに応じて、さまざまな異なるプロトコルを使用します。httpリモートを使用している場合、通常はスマートhttpプロトコルと呼ばれるものを使用します。これは、基本的にリモート参照のhttp getリクエストに加えて、欠落しているデータを送信するためのhttp postリクエストです。はwebdavを使用するダムhttpプロトコルでもありますが、ほとんどのホスティングプロバイダーはこれをサポートしていません。sshリモートを使用している場合、gitはネイティブgitプロトコル(暗号化されていない接続でも使用可能)をリモート側で呼び出されたgitプログラムに話します。サーバーはこのためにsftpを使用しません。以前はftpをgit操作に使用することが可能でしたが、これを行う人はほとんどいません。これは、(a)多くの実装ではtlsの動作が適切に実装されていないため、ftpを保護するのが難しいこと、(b)複数のポートを開く必要があるため、さまざまなネットワークでftpを使用することが難しいこと、(c)httpが一般的に高速であることによるftpよりも(d)gitは、ファイルをアップロードするだけでなく、接続を介してリモート側とネゴシエートすることにより、はるかに少ないデータを送信できます。これらの最初の3つの理由により、ftpは一般的には珍しく、本当に時代遅れであると見なされるべきです。sftpは基本的に、ssh接続を介した特殊なファイル転送プロトコルです。妥当なssh接続で安全であると考えられており、ftpに代わる優れた手段です。送信されるメッセージに関しては、ftpとは大きく異なります。 gitはこれをネイティブで使用しませんが、sftpを使用してリモートディレクトリをマウントし(sshfsなどを使用)、ローカルリポジトリのようにそのリポジトリにプッシュすることができます。この場合、gitプロトコルの両側がローカルマシンで実際に動作しており、ファイルはsftp経由で読み書きされます。