web-dev-qa-db-ja.com

"git commit"と "git Push"の違いは何ですか?

私が今行っているGitチュートリアルでは、git commitを使って行った変更を保存します。

git Pushはそのために何に使われていますか?

815
ben

基本的にgit commit " はリポジトリ "への変更を記録し、git Push " は関連するオブジェクトと共にリモート参照を更新します "。そのため、最初のものはあなたのローカルリポジトリに関連して使われ、後者はリモートリポジトリと対話するために使われます。

これは Oliver Steele からのNice画像で、gitモデルとコマンドについて説明しています。

Git data transport commands

GitReady.comgit Pushgit pullについてもっと読んでください(最初に参照した記事)。

1504
tanascius

commit :ローカルリポジトリに変更を加える

プッシュ :最後のコミットをリモートサーバーに転送します。

188
TheHippo

基本的に、git commitはあなたの変更をあなたのローカルレポジトリに入れますが、git Pushはあなたの変更をリモートの場所に送ります。

54
markovuksanovic

Gitは分散バージョン管理システムなので、違いはcommitはあなたのローカルリポジトリへの変更をコミットするのに対し、Pushはリモートリポジトリへのプッシュ変更をプッシュするということです。

25
Justin Ethier

git Pushは、あなたがローカルリポジトリに対して行ったコミットをリモートのコミットに追加するために使用されます - 一緒にgit pull、それは人々が共同作業することを可能にします。

24

git commit local リポジトリへのあなたの変更を記録します。

あなたのローカルな変更を含むgit Push update the remote リポジトリ。

13
Naresh

コミット :{スナップショット|チェンジセット|歴史記録|バージョン|リポジトリの '名前を付けて保存'}。 Gitリポジトリ= のシリーズ(ツリー) をコミットします。

ローカル repository:あなたのマシン上のリポジトリ。

Remote repository:サーバー上のリポジトリ(例: Github.com )。

git commit local リポジトリに新しい commit (last commit + staged modification)を追加してください。

git Pushgit pull local リポジトリとそれに関連する remote リポジトリを同期させる。 Push - local から remote への変更を適用し、pull - remote から local への変更を適用します。

12
xged

注意すべき3つのこと:

1) 作業ディレクトリ -----コードファイルが存在するフォルダ

2) ローカルリポジトリ ------これは私たちのシステムの内部にあります。初めてCOMMITコマンドを実行すると、このローカルリポジトリが作成されます。作業ディレクトリと同じ場所に
Checkit(.git)ファイルが作成されます。
その後、コミットするたびに、作業ディレクトリのファイルに行った変更がローカルリポジトリ(.git)に保存されます。

3) Remote Repository -----これは世界中のどこにあるサーバーのように私たちのシステムの外側にあります。 githubのように。 Pushコマンドを実行すると、ローカルリポジトリのコードがこのリモートリポジトリに格納されます。

5
DEVINDER THAKUR

以下の点を追加してください。

ローカルブランチで行われたコミットをリモートリポジトリにプッシュするためにgit Pushを使用するので、Yonはコミットするまでプッシュできません。

git Pushコマンドは2つの引数を取ります。

リモート名、例えばOriginブランチ名、例えばmaster

例えば:

git Push  <REMOTENAME> <BRANCHNAME> 
git Push  Origin       master
5
Faisal Shaikh

非常に大雑把な例えとして、git commitと編集済みファイルの保存を比較すると、git Pushはそのファイルを別の場所にコピーすることになります。

この類推をこの文脈から外さないでください - コミットしたりプッシュしたりすることは、編集したファイルを保存してコピーすることのようなものではありません。とは言っても、それは比較のためだけに成り立つべきです。

3
amn

git commitは変更を正式に保存することに他なりません。コミットメッセージを送信するたびに、コミットが完了したらリモートにプッシュして変更をグローバルに確認できます。

これは、リモートにプッシュする前にたくさんのコミットを実行できることを意味します(コミットの一覧とメッセージも表示できます)。gitはコミットIDを40桁のコードで保存します。

私はリモートで私の変更を見たいと思ったときだけ私はgit Pushを使います(その後、私のコードがjenkinsで動くかどうかをチェックします)

0
Sai Koti

Githubのリポジトリでログファイルが管理されていると想像するなら、gitコマンドaddcommitの使い方を理解するのはより簡単です。私にとっての典型的なプロジェクトのログファイルは次のようになります。

---------------- Day 1 --------------------
Message: Completed Task A
Index of files changed: File1, File2

Message: Completed Task B
Index of files changed: File2, File3
-------------------------------------------

---------------- Day 2 --------------------
Message: Corrected typos
Index of files changed: File3, File1
-------------------------------------------
...
...
...and so on

私は通常git pullリクエストで一日を始め、git Pushリクエストでそれを終わらせます。そのため、1日の記録内のすべてのものは、それらの間で発生したことに対応しています。毎日、いくつかのファイルを変更する必要がある 論理タスク があります。その作業中に編集されたファイルは索引にリストされます。

これらの各サブタスク(ここではタスクAとタスクB)は個々のコミットです。 git addコマンドは、 'Index of Files Changed'リストにファイルを追加します。このプロセスはステージングとも呼ばれ、実際には変更されたファイルと実行された変更を記録します。 git commitコマンドは、後で参照するために使用できるカスタムメッセージとともに、変更とそれに対応するインデックスリストを記録/確定します。

リポジトリのローカルコピーのみを変更しており、Github上のコピーは変更していないことに注意してください。これ以降は、git Pushを実行したときにのみ、コミットされたそれぞれのインデックスファイルとともに、これらの記録された変更すべてを実行し、(Githubの)メインリポジトリにログインします。

例として、架空のログファイルの2番目のエントリを取得するには、次のようにします。

git pull
# Make changes to File3 and File4
git add File3 File4
# Verify changes, run tests etc..
git commit -m 'Corrected typos'
git Push

一言で言えば、git addgit commitはメインリポジトリへの変更を体系的な論理的なサブ変更に分割することを可能にします。他の答えやコメントが指摘しているように、もちろんそれらにはもっと多くの用途があります。しかし、これは最も一般的な使用法の1つであり、GitがSvnのような他の一般的なものとは異なり、多段階のリビジョン管理システムであることの背後にある駆動原理です。

0
Cibin Joseph