2012-06-28 21 views
39

私はちょうど今何か独特のものを見つけました。私は私の夏の仕事の同僚に私のコードのための新しいリモートgitリポジトリを設定するのを助けるように頼みました。彼がやったことややりたいことについて多くの混乱がありました。私は彼に彼の設定を送信して彼のリモコンへの道を見ることができるように頼んで、彼は遠隔地を持っていないことを知った。私はこのことについて彼に尋ねたとき、彼はこのように彼のワークフローを説明した:git pushとgit pullの違いは何ですか?

  1. 変更ローカル
  2. は、リモートディレクトリへ
  3. 移動
  4. gitのプルCコミット何か:\のlocaldirの

ので、代わりに彼はローカルのレポからサーバー上のリポジトリに常に引っ張ってきたリモートにプッシュする後方に働くことの並べ替え。私は彼にこれに直面したとき、彼は私にその違いが何かを尋ねました、そして、私は本当に彼に答えることができませんでしたが、私は正しいことがあると思いますか?

私の質問はすべてです:遠隔地へのプッシュと遠隔地からの引き込みの違いは何ですか?

+4

@Downvoters:理由を知って、質問を改善できるようにしてください。 – Zeemee

+2

は、**の質問が**ばかげているので、あまりにも下降する傾向があった**ばかげたが実際にはない!代わりに今upvoting。 – eckes

+2

@Mulmoth正確に。私が間違っていたことを誰かがちょうど私の目の前で蹴っているのを知るために、Har。 =) – Qw4z1

答えて

10

リモートにプッシュする:別のgitリポジトリにコミットしてください。 git repoは "リモート"と見なされますが、ハードドライブの別のフォルダのrepoにすることができます。 リモートからプルする:リモートのリポジトリからコミットを取得し、現在のHEAD(現在のレポのチェックアウト)にマージする

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

しかし、あなたのリポジトリが/利用可能な共有された場合、彼はちょうど行うことができただろう:

  1. 変更何かローカル
  2. は私に
  3. リポジトリにプッシュ
+1

私はこれもサーバーにプッシュするいくつかの問題を抱えているので、これが当てはまると思います。 – Qw4z1

+2

それはそうです。そして、[eckes](http://stackoverflow.com/a/11240793)によると、サーバにはmasterを実稼働バージョンとして反映しているチェックアウトされたディレクトリが既に存在するかもしれません。したがって、ローカルのブランチからリモートのマスターブランチにプッシュすることはできません。これは、プロダクションのニーズに応じて既にチェックアウトされているためです。 – Dolanor

0

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

1

はい、それは後方に働いています。

原理ワークフローは次のとおりです。

  1. 変更何かローカル
  2. がリモートにプッシュではないため

つのユースケースは、(別のexplained by Dolanorである)ということで、リモートディレクトリへ

  • プッシュをコミット作業コピーはリモートでチェックアウトされています(つまり、裸のレポはありません)。リモートボックスでチェックアウトされたブランチ(例えばmaster:master)をプッシュしたいとき、チェックアウトされたブランチへのプッシュは禁止されているので、これは成功しません。

    私の意見では、これはリモートマシンにホッピングしてローカルマシンからプッシュする代わりにプルする唯一の使用例です。

  • +1

    私は、リポジトリが使えない(gitデーモンなどはない)他のケースについて説明しました。私は既にチェックアウトされたリポジトリを忘れていました。このようなワークフローを行うと2つのケースがあるようです。 – Dolanor

    +0

    @Dolanor:そうです!編集された答え。 – eckes

    +0

    基本的には押して引っ張るだけで、コミットを反対方向に投げているだけですか? – Qw4z1

    13

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

    例えば、Githubは、非寄稿者がリポジトリにプッシュできないようにしますが、寄稿者がその変更を統合できるようにプルリクエストを送信できるようにします。

    +2

    GitHubのプルリクエストの例は、私にとってははるかに明確です。ありがとう! – Qw4z1

    +0

    初心者のための新しい用語を「理解する」よりもむしろ、この答えで簡単に説明されています。 – NavkarJ

    関連する問題