Git コミットと Git プッシュ
このチュートリアルでは、git commit と git push の違いを学びます。
Git は、通常は共同開発環境でファイルの変更を追跡する分散バージョン管理システムです。
Git は、各開発者(つまり、各マシン)に、リポジトリとして追跡されるプロジェクトディレクトリの完全な履歴のローカルコピーを提供します。次に、ローカルの変更がローカルリポジトリからリモートリポジトリにコピーされます。
また、リモートリポジトリでの変更はすべてローカルリポジトリにフェッチされます。
Git は、これらの目標を達成するためのコマンド git commit および git push を提供します。
次に、それらの違いを例を挙げて詳しく説明します。
Git の git commit と git push の違い
git commit と git push の基本的な違いは、git commit のスコープがローカルリポジトリであり、git push のスコープがリモートリポジトリであるということです。
git push コマンドは、常に git commit コマンドの実行後に実行されます。
git commit コマンドを実行すると、プロジェクトの現在ステージングされている変更のスナップショットがキャプチャされます。git add コマンドは、変更のステージングを行います。
git push コマンドは、ローカルリポジトリのコンテンツをリモートリポジトリにプッシュします。このコマンドは、コミットをローカルリポジトリからリモートリポジトリに転送します。
ローカルリポジトリに sample.txt という名前のファイルがあり、それを更新し、git add コマンドを使用してファイルの変更をステージングしたとします。
次に、ローカルリポジトリのステータスを次のように確認します。
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: sample.txt
ファイル sample.txt の変更がコミットの準備ができていることが示されていることがわかります。
これを行うには、git commit コマンドを使用します。メッセージで変更をコミットするための git commit コマンドの構文は、git commit -m <message> です。
したがって、次のようにします。
$ git commit -m "updated sample.txt"
ここで、ローカルリポジトリの Git ログを次のように確認します。
$ git log --oneline
4488776 (HEAD -> main) updated sample.txt
...
これで、Git ログで、ファイル sample.txt のコミットが表示されます。このコミットは、ローカルリポジトリインデックスの HEAD にあります。新しいコミットは、インデックスの HEAD の直接の子であり、ブランチです。main はそれを指すように更新されます。
次に、git push コマンドを実行して、コミットをリモートリポジトリにプッシュします。git push コマンドの構文は git push <remote-repository> <branch> です。
したがって、次のようにします。
$ git push origin main
これで、エイリアス origin とリモートブランチ main で指定されたリモートリポジトリにコミットがプッシュされました。
ここで、Git ログを次のように再確認します。
$ git log --oneline
4488776 (HEAD -> main, origin/main) updated sample.txt
...
Git ログに、ファイル sample.txt のコミットが表示されていることがわかります。
これで、コミットはローカルリポジトリのインデックスの HEAD とリモートリポジトリのリモートブランチの両方にあります。
したがって、Git のコマンド git commit と git push の違いを詳しく説明しました。
関連記事 - Git Commit
- 1つのコマンドで Git Add と Git Commit
- 1つのコマンドで git add、git commit、および git push
- 1つのファイルを除くすべてのファイルをコミット用に追加
- Git で現在のコミットを取得する
- Git で追跡されていないファイルをコミットするさまざまな方法
- Git で特定のコミットを変更する