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 で特定のコミットを変更する