61

今日は何か変わったものに出くわしました。私は夏の仕事で同僚に私のコード用の新しいリモートgitリポジトリをセットアップするのを手伝ってくれるように頼みました、そして彼が何をしたか、そして私が何をしたいのかについて多くの混乱がありました。私は彼に彼のリモコンへのパスを見ることができるように彼の設定を送るように頼みました、そして彼がリモコンを持っていなかったことを知りました。私がこれについて彼に尋ねたとき、彼は次のように彼のワークフローを説明しました:

  1. ローカルで何かを変更する
  2. 専念
  3. リモートディレクトリに移動
  4. git pull c:\ localdir

そのため、リモートにプッシュする代わりに、彼は常にローカルリポジトリからサーバー上のリポジトリにプルしました。逆方向に作業するようなものです。私がこれについて彼に直面したとき、彼は私に違いは何であるかを尋ねました、そして私は彼に本当に答えることができませんでした、しかし私は何か正しいと思いますか?

ですから、皆さんへの私の質問は、リモートにプッシュすることとリモートからプルすることの違いは何ですか?

4

5 に答える 5

22

リモートへのプッシュ: いくつかのコミットを別の git リポジトリに送信します。git リポジトリは「リモート」と見なされますが、ハード ドライブの別のフォルダーにあるリポジトリである可能性があります。リモートからプル: リモート リポジトリからいくつかのコミットを取得し、それらを現在の HEAD (リポジトリの現在のチェックアウト) にマージします。

あなたの同僚は、あなたのリポジトリが利用可能ではない (git デーモンが実行されていない、または gitweb または ssh サーバーがオンになっている) 可能性があるため、push の代わりに pull を使用している可能性がありますが、彼はあなたのコンピューターから利用可能でした。それはサーバーであるため、攻撃のベクトルとなる可能性のある git デーモン/サービスを公開したくないかもしれません。

しかし、あなたのリポジトリが共有/利用可能であった場合、彼は次のことができたはずです:

  1. ローカルで何かを変更する
  2. 専念
  3. リポジトリにプッシュする
于 2012-06-28T08:32:43.490 に答える
19

私の見解では、ユーザーがコミットを「マスター」と見なされるリポジトリにプッシュできるようにするか、その「マスター」を変更する権限を持つ単一のユーザーにプル リクエストを送信できるようにすることができます。

たとえば、Github では、非寄稿者がリポジトリにプッシュすることはできませんが、寄稿者が変更を統合できるようにプル リクエストを送信することはできます。

于 2012-06-28T08:43:55.977 に答える
2

なし。レポは互いのコピーであり、プルとプッシュは単なる方向フローです。同僚の方法との違いは、彼が 4 番目の不要なコマンドを追加したことです。

于 2012-06-28T08:27:38.507 に答える
2

はい、逆方向に動作しています。

原則的なワークフローは次のとおりです。

  1. ローカルで何かを変更する
  2. 専念
  3. リモートディレクトリにプッシュ

リモートにプッシュしないための 1 つの使用例 (もう 1 つはDolanor によって説明されています) は、作業コピーがリモートでチェックアウトされることです (つまり、ベア リポジトリではありません)。リモート ボックス (例: ) でチェックアウトされたブランチをプッシュしたい場合、チェックアウトされたブランチへのプッシュmaster:masterは禁止されているため、これは成功しません。

私の意見では、ローカル マシンからプッシュする代わりに、リモート マシンにホップ オーバーしてプルする唯一のユース ケースです。

于 2012-06-28T08:28:32.217 に答える