web-dev-qa-db-ja.com

コミットとパッチの違いは何ですか?

ソース管理に慣れていないので、コミットとパッチの違いを知りたいのですが?また、パッチはどのように/いつ使用され、Webアプリケーションで使用できますか?

7
eugenewcf

Git/Mercurialについてはわかりませんが、CVSについて知っていることに基づいてここで考えます。パッチはそこでのみ使用したためですが、同じように機能する/同じように使用されると確信しています。

「コミット」すると、ファイルのリモートバージョンをローカルリポジトリのファイルで効果的にオーバーライドします。実際にコミットするのは「パッチ」です。

パッチは、1つ以上のファイルの2つのバージョン間の違いのセットを含むファイルです。

パッチ適用とは、リモートのリポジトリのバージョンとマージせずに、ローカルバージョンをパッチを送信した人のバージョンとマージできるようにするために、他の誰かから(たとえば、電子メールで)パッチを入手するときです。 。これは、パッチを提供した人がリポジトリへの書き込み権限を持っていないためによく起こります。

したがって、基本的には、人はパッチを作成するに、1つの差分のセット、または2つのバージョン間の複数のファイルを含めることができます。そして、別の人がパッチを適用を自分のバージョンに適用し、次にパッチをコミットをリポジトリに適用できます。

それが使用される理由については、1人のユーザーがアクセス権を持たない場合に上記で説明したシナリオが有効です。もう1つの使用法は、加えた変更全体をコミットしたくない場合にパッチを提供/コミットできることです。たとえば、1つのファイルに3つの変更を加えましたが、最後の変更はコミットする予定のないデバッグコードなので、パッチを作成し、最後の変更をパッチファイルから削除すると、パッチを準備できます。送信/コミット。

最後に、最後の質問と同様に、コードがリポジトリに格納されているあらゆるタイプのアプリケーションに使用できます。

編集:具体例:書き込みアクセス権がないGithubプロジェクトを修正するパッチを送信できます。

4
Jalayn

パッチは、作業コピーやリポジトリなど、どこにでも適用できます。コードをある状態から別の状態にするために必要な変更をリストしたのは、単なるファイル形式です。バージョン管理は関与する必要はありません。

コミットは、一連のコード変更(パッチが参照するものと同様)をソースコードリポジトリ(Mercurial/Gitリポジトリなど)に保存します。そこから、誰かが最新のコードをチェックアウトするたびに、そのコミットが含まれます。

6
Giscard Biamby

私はあなたの混乱を理解できます。2つの単語は密接に関連しています。 Mercurialの用語集 があります:

  • Patch(名詞)差分操作の結果。

    例:「パッチをお送りしました。」

  • Patch(動詞)パッチファイルを使用して、1つのチェンジセットを別のチェンジセットに変換するプロセス。

    例:「そのリビジョンにパッチを適用する必要があります。

  • Commit(名詞)チェンジセットの同義語。

    例:「最近のコミットでバグは修正されましたか?」

  • Commit(動詞)リポジトリへの変更を記録する行為。ファイルが作業ディレクトリでコミットされると、Mercurialはコミットされたファイルとその親チェンジセットの違いを見つけ、リポジトリに新しいチェンジセットを作成します。

    例:「これらの変更を今すぐコミットする必要があります。」

したがって、少し詳しく説明すると、パッチは2つのバージョン/チェンジセット間の変更の説明です。その説明はhg diffで取得し、次のようになります。

diff --git a/x b/x
--- a/x
+++ b/x
@@ -1,3 +1,3 @@
 a
-old line
+new line
 b

パッチは nified diff format です。これはマシンが読み取り可能な形式なので、Mercurialはパッチを適用して他の場所に同じ変更を加えることができます— Mercurialはpatchあなたのコード。

ファイルに変更を加えたら、hg commitを使用して変更をコミットできます。これにより、新しいチェンジセット(コミットとも呼ばれます)が作成されます。用語集からわかるように、変更セットはコミットされたファイルと親の変更セットの違いを記録します。これはパッチです。そのため、チェンジセットにはパッチが含まれ、コミッター名、日付、メッセージなどのその他の情報が含まれます。

パッチは、同僚とコードについて話し合う必要がある場合によく使用されます。あなたは彼にパッチを電子メールで送って、彼はそれをレビューすることができます。変更をコミットしてファイルを変更する場合は、パッチを使用することもできます。Webアプリケーションの場合、ローカルのカスタマイズを含むパッチを作成できます。アプリの新しいバージョンを入手したら、まずパッチを削除し、アプリを更新してから、パッチを再適用します。そうすることで、カスタマイズをオリジナルのソースコードの上にパッチとして維持できます。

5
Martin Geisler