Gitのcommitとpushの違い|保存と共有を初心者向けに解説
この記事でわかること
- Gitのcommitとpushの違い
- git add、git commit、git pushの順番
- ローカルリポジトリとリモートリポジトリの関係
- 初学者が間違えやすいpush前の確認ポイント
- GitHubへ共有するときに気をつけたい安全な流れ
結論・重要ポイント
- commitは、自分のPC上のローカルリポジトリに変更の記録を作る操作です。
- pushは、ローカルにあるcommitをGitHubなどのリモートリポジトリへ送る操作です。
- git addで記録したい変更を選び、git commitで記録を作り、git pushで共有します。
- commitしただけではGitHub上には反映されません。
- push前には、差分、ブランチ、秘密情報が含まれていないかを確認するのが安全です。
対象読者と前提知識
この記事は、Gitを学び始めて、保存したはずなのにGitHubへ出ていない、commitとpushのどちらをすればよいか分からないと迷っている初学者向けです。
前提知識は、ファイルを編集して保存できること、ターミナルで短いコマンドを実行できること程度で問題ありません。ここでは、1人または小さなチームでGitHubへコードを共有する場面を想定します。
3人による授業形式の会話
生徒りくちゃん
Gitでcommitしたのに、GitHubの画面では変更が見えませんでした。これは、保存に失敗しているということなのでしょうか?
MAO先生
結論から言うと、commitは自分のPC上へ記録を作る操作です。GitHubへ送るには、そのあとでpushする必要があるのです。
生徒うみちゃん
じゃあ、毎回いきなりgit pushすればいいじゃん!それならGitHubにもすぐ出るでしょ?
MAO先生
そこは順番が大切です。pushで送れるのは、すでに作られたcommitです。まずgit addで記録したい変更を選び、git commitで記録を作ってから、git pushで共有します。
生徒りくちゃん
つまり、commitは手元の記録、pushは共有先へ送る操作、ということですね!
MAO先生
その通りです。よく気づきましたね!ノートに清書するのがcommit、そのノートをチームの棚へ置くのがpushに近いイメージです。
生徒うみちゃん
でも、commitを細かく作りすぎたら面倒じゃない?全部まとめて1回でよくない?
MAO先生
実は、あとで見返すなら小さめのcommitの方がよいケースもあるのです。修正理由が分かりやすく、問題が起きたときにどの変更が原因か追いやすくなります。
生徒りくちゃん
pushするときは、どの場所へ送るかも決まっているのでしょうか?originやmainという言葉を見たことがあります。
MAO先生
はい。originはよく使われるリモート名、mainはブランチ名の一例です。git push origin mainは、手元のmainブランチのcommitを、originというリモートへ送る、という意味になります。
生徒うみちゃん
pushで怒られたら、強制的に上書きすれば早いってこと?
MAO先生
それは危険な早とちりです。強制pushは他の人の変更を失わせる可能性があります。まずgit statusやgit pullの必要性を確認し、チームのルールに沿って原因を見てから対応しましょう。
コード・操作手順・具体例
1. 変更状況を確認する
まず、どのファイルが変更されたかをgit statusで確認します。
git status
変更されたファイル、まだGitで追跡していないファイル、commit対象に入っているファイルを確認できます。
2. commitに入れる変更を選ぶ
git addは、次のcommitへ入れたい変更を選ぶ操作です。
git add src/example.js
複数ファイルをまとめて入れることもできますが、初学者のうちは、意図したファイルだけを指定すると確認しやすくなります。
git add src/example.js README.md
※秘密情報、不要な一時ファイル、大きな生成物が混ざっていないかを確認してからgit addしてください。
3. commitを作る
git commitで、選んだ変更をローカルリポジトリへ記録します。
git commit -m "問い合わせフォームの入力チェックを追加"
commitメッセージは、何を変えたかが後から分かる内容にします。例えば修正だけではなく、何を修正したかまで書くと読み返しやすくなります。
4. GitHubへpushする
commitをGitHubなどのリモートへ送るには、git pushを使います。
git push origin main
この例では、originというリモートへ、mainブランチのcommitを送ります。実際のブランチ名がmainではない場合は、作業中のブランチ名に合わせます。
5. よく使う確認コマンド
commit前後で次の確認を入れると、間違いを減らせます。
git status
git diff
git log --oneline -5
git diffは、まだcommitしていない変更の差分確認に使います。git log —oneline -5は、直近5件のcommitを短く確認する例です。
よくある誤解や失敗
commitしたらGitHubにも反映されると思ってしまう
commitはローカルの記録です。GitHubへ反映するには、別途pushが必要です。
git addを保存コマンドだと思ってしまう
git addは、commitに入れる候補を選ぶ操作です。記録として残るのはgit commitを実行したあとです。
push前に差分を見ず、不要なファイルを送ってしまう
git statusとgit diffで確認してからcommitする習慣をつけると、設定ファイル、一時ファイル、秘密情報の混入を減らせます。
エラー時にすぐ強制pushしようとする
non-fast-forwardのようなpushエラーは、リモート側に自分の手元にない変更があるときにも起きます。強制pushは影響が大きいため、まず原因を確認します。
commitメッセージが抽象的すぎる
修正、更新だけでは後から内容を追いにくくなります。ログインエラー時の表示を修正のように、対象と内容を入れると実務で役立ちます。
Q&A
Q. commitだけしてpushしない状態は悪いことですか?
A. 悪いことではありません。途中作業を手元で整理するためにcommitを作ることはあります。ただし、チームで共有すべき変更は、必要な確認をしたうえでpushします。
Q. pushしたあとに間違いに気づいたらどうすればよいですか?
A. 基本は、追加のcommitで修正します。公開済みの履歴を書き換える操作は影響が大きいため、チームのルールやリポジトリの運用方針を確認してから行います。
Q. originとは何ですか?
A. originは、Gitでよく使われるリモート名です。多くの場合、cloneした元のGitHubリポジトリを指します。ただし、必ずGitHubとは限らないため、必要に応じてgit remote -vで確認します。
Q. main以外のブランチへpushすることもありますか?
A. あります。開発用ブランチを作って作業する場合は、そのブランチへpushし、Pull Requestで確認してからmainへ取り込む流れがよく使われます。
要点まとめ
- commitはローカルに変更の記録を作る操作です。
- pushはローカルのcommitをリモートへ送る操作です。
- 基本の流れは、git status、git add、git commit、git pushです。
- push前には、差分、ブランチ、秘密情報の混入を確認します。
- 強制pushや履歴書き換えは影響が大きいため、初学者は特に慎重に扱います。
授業に登場する3人については、MAO先生のIT授業 キャラクター紹介で確認できます。
公式資料・参考資料
- Git公式ドキュメント git-commit
- Git公式ドキュメント git-push
- Pro Git Book: Recording Changes to the Repository
- Pro Git Book: Working with Remotes
- GitHub Docs: Pushing commits to a remote repository
内容に合うCTA
GitやGitHubは、コマンドを覚えるだけでなく、どの単位でcommitするか、push前に何を確認するか、チームでどう共有するかを決めると実務で使いやすくなります。
小規模チームや業務システム開発で、Git運用の手順化、レビュー前の確認、GitHub連携の整理に不安がある場合は、MAO工房へご相談ください。
関連記事
Dependabotのcooldownとは|依存関係更新を安全に待つ考え方
GitHub Dependabot version updatesで既定化されたcooldownを、セキュリティ更新との違い、dependabot.ymlでの調整例、実務の注意点までMAO先生の授業形式で解説します。
記事を読む →Git mergeとrebaseの違い|履歴と使い分けを初心者向けに解説
Gitのmergeとrebaseの違いを、履歴の残り方、共有ブランチでの注意点、競合時の戻し方までMAO先生の授業形式で解説します。
記事を読む →Pythonのvenvとpipとは|仮想環境を初心者向けに解説
Pythonのvenvとpipの関係を、仮想環境を作る理由、パッケージを入れる場所、requirements.txtで再現する考え方までMAO先生の授業形式で解説します。
記事を読む →Cloudflare WorkersのNode.js互換性とは|2026年8月の既定化を初心者向けに解説
Cloudflare Workersで2026年8月4日以降のcompatibility_dateからNode.js互換性が既定で有効になる変更を、初心者向けに設定例、注意点、既存プロジェクトの確認手順まで解説します。
記事を読む →MAO工房に相談できます
GitとGitHubの運用ルールを相談できます
commitの分け方、push前の確認、共有リポジトリでの作業手順など、初学者にも伝わる開発運用ルールづくりを支援します。
- ✓ commit前の確認手順を整理
- ✓ pushと共有ルールを明文化
- ✓ 小規模チームの開発運用にも対応