コミット、コミットとプッシュ、コミットと同期の違い


149

私はビジュアルスタジオ2013を使用していますが、C#コードをコミットするときに3つのオプションに直面しています。ローカルリポジトリとGitHubリポジトリの関係について、各オプションの違いについて説明する必要があります。

  • オプション1はコミットと言う
  • オプション2はコミットしてプッシュと言う
  • オプション3は「コミットして同期」と言う

最後の2つのオプションの違いがよくわかりません。コミットとプッシュではなく、コミットと同期をいつ使用すればよいですか?

回答:


216
  1. コミットは、ローカルマシンで行った変更を記録するだけです。リモートリポジトリの変更はマークされません。
  2. コミットとプッシュは上記を行い、それをリモートリポジトリにプッシュします。つまり、行った変更はすべてリモートリポジトリにも保存されます。
  3. コミットと同期は3つのことを行います。まず、コミットします。次に、プルを実行します(リモートリポジトリから更新情報を取得します)。最後に、プッシュします。

Microsoftの詳細はこちら


「コミットと同期」が本当に得られないまず、コミットします。次に、プルを実行します。最後に、プッシュします。コードの変更がすでにリモートリポジトリにコミットされているのに、ここでプッシュが必要なのはなぜですか(プッシュに変更はありません)。
Bhuwan Pandey 2016

6
@BhuwanPandey「コミット」の実行には「プッシュ」は含まれません。それらは別々です。リモートリポジトリへのコミットを更新するのは「プッシュ」だけです。それを確認するには、他の回答の画像を参照してください。「コミット」はインデックスからローカルリポジトリに移動し、「プッシュ」はローカルリポジトリからリモートリポジトリに移動して終了します
camiblanch

複数のユーザーが同時にアプリケーションで作業している場合、同期操作により競合が発生する可能性がありますか?
Murali Dhar Darshan

私はVisual Studio 2017を使用していますが、[コミットして同期]コマンドで変更が完全にプッシュされません。同期を実行すると、変更がVisual Studioの履歴タブに表示されますが、Githubサイトでは表示されないためです。Commig and Syncの後にPushコマンドを実行する必要があり、その後、私の変更がGithubサイトに表示されました。
Fabiano

混乱は、Commitがリモートリポジトリにファイルを送信することを考えることに起因していると思います。実際、Commitはローカルリポジトリに編集内容を記録するだけです。Pushがなければ、サーバーにヒットすることはありません。
アランバルジュ

72

camieblanchの回答に追加します。tanasciusのこの役立つ写真/投稿を見つけました(ここ)。「これはgitモデルとコマンドを説明するOliver Steeleからの素敵な写真です:」 ここに画像の説明を入力してください


1
しかし、この画像の同期はどこにありますか?
アランバルジュ

2
写真にはありません。「camiblanch」の答えをもう一度参照すると。ローカルリポジトリにコミットし、プルしてリモートリポジトリをローカルリポジトリと同期(マージ)してから、マージされたローカルリポジトリをリモートリポジトリにプッシュします。
A.sharif

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