Back

開発者が知っておくべき10のGitコマンド

開発者が知っておくべき10のGitコマンド

Gitコマンドは、現代のあらゆる開発ワークフローの基盤を形成しています。本番環境へのコードのプッシュや分散チームとのコラボレーションなど、これら10のコマンドは日常業務のほとんどをカバーします。2025年の現代的なGitワークフローで実際に知っておくべき内容を紹介します。

重要なポイント

  • 変更を加える前にリポジトリの状態を把握するため、git statusgit diffをマスターしましょう
  • より明確で焦点を絞ったコマンドとして、古いgit checkoutの代わりにgit switchgit restoreを使用しましょう
  • 失われたコミットの回復やミスの取り消しのセーフティネットとしてgit reflogを知っておきましょう
  • セキュリティパッチや新機能の恩恵を受けるため、Gitのインストールを最新の状態に保ちましょう

リポジトリの状態を確認する

git status

何をする前にも、git statusは現在の状況を教えてくれます。作業ディレクトリ内の変更されたファイル、ステージされた変更、追跡されていないファイルを表示します。

git status

これを頻繁に実行しましょう。コミット前の予期しない事態を防ぎ、Gitが何を認識しているかを理解するのに役立ちます。

git diff

statusどのファイルが変更されたかを示しますが、diffはファイル内で何が変更されたかを示します。

git diff              # ステージされていない変更
git diff --staged     # ステージされた変更

コミット前に変更内容を確認しましょう。これにより、ミスを早期に発見できます。

ステージングとコミット

git add

ステージングは、次のコミットのために変更を準備します。各スナップショットに何を含めるかを正確にコントロールできます。

git add filename.js   # 1つのファイルをステージ
git add .             # すべてをステージ

より細かい制御が必要な場合は、git add -pを使用してファイル内の特定のハンク(変更の塊)をステージできます。これは、関連性のない複数の変更を行った場合に便利です。

git commit

コミットは、プロジェクト履歴に永続的なスナップショットを作成します。

git commit -m "Fix authentication timeout bug"

明確なメッセージを書きましょう。最後のコミットメッセージを修正したり、忘れた変更を追加したりする必要がある場合は、git commit --amendを使用します。

リモートとの連携

git clone

cloneは、リポジトリとその完全な履歴をマシンにダウンロードします。

git clone https://github.com/user/repository.git

git pull

pullは、リモートから変更を取得し、現在のブランチにマージします。

git pull origin main

注意:git pullgit fetchgit mergeを組み合わせたものです。マージ前にリモートの変更を確認したい場合は、まずgit fetchを実行します。

git push

pushは、ローカルのコミットをリモートリポジトリにアップロードします。

git push origin main

コミットされた変更のみがプッシュされます。コミットされていない作業はローカルに残ります。

ブランチと履歴

git switch

ブランチの切り替えには、git switchが現代的なアプローチです。Git 2.23で導入され、現在はこの目的において古いgit checkoutよりも推奨されるコマンドです。

git switch feature-branch      # ブランチを切り替え
git switch -c new-feature      # 作成して切り替え

git switchとcheckoutの違い:checkoutは今でも機能しますが、関連性のないタスク(ブランチの切り替え、ファイルの復元、HEADのデタッチ)を多く扱いすぎています。switchは1つのことを明確に行います。こちらを使用しましょう。

git restore

同様に、git restoreはファイルの復元を処理します。これも以前はcheckoutに過負荷がかかっていたタスクです。

git restore filename.js           # 作業ディレクトリの変更を破棄
git restore --staged filename.js  # ファイルをアンステージ

この分離により、2025年にツールを学ぶ開発者にとって、Gitのメンタルモデルがより明確になります。

git log

プロジェクトの履歴を理解することは重要です。git logは、現在のブランチのコミット履歴を表示します。

git log --oneline --graph    # ブランチ構造を含むコンパクトなビュー

--onelineフラグは出力を読みやすく保ちます。--graphを追加すると、ブランチとマージを視覚化できます。

git reflogによる回復

問題が発生したとき(そして必ず発生します)git reflogはセーフティネットです。これは、git logに表示されなくなったコミットも含め、すべてのHEADの移動を記録します。

git reflog

誤って間違ったコミットにリセットしましたか?ブランチを削除しましたか?reflogは失われた作業を見つけて回復するのに役立ちます。日常的なコマンドではありませんが、その存在を知っていることで何時間ものパニックを回避できます。

ワークフローの選択に関する注意

チームはしばしばmergeとrebaseについて議論します。どちらも変更を統合しますが、その後の履歴の見え方が異なります。mergeは完全なブランチ構造を保持します。rebaseは線形の履歴を作成します。どちらも普遍的に正しいわけではありません。チームの好みとプロジェクトのニーズに基づいて選択してください。

また注目に値するのは、Gitのインストールを適度に最新の状態に保つことです。最近のバージョンでは、パッチを適用する価値のあるセキュリティアドバイザリに対処しています。

まとめ

これらのコマンド(statusdiffaddcommitclonepullpushswitchlogreflog)は、日々の作業を行う開発者にとってのGitの必須事項をカバーしています。まずこれらをマスターしましょう。より高度なコマンドは、この基礎がしっかりしてから役立つようになります。

まだ使用していない場合は、switchrestoreを使い始めましょう。これらは2025年のGitコマンドの設計方法を反映しています:焦点が絞られ、予測可能で、推論しやすくなっています。

よくある質問

git fetchはリモートリポジトリから変更をダウンロードしますが、ローカルブランチにはマージしません。git pullはfetchとmergeを1ステップで組み合わせ、リモートの変更を現在のブランチに自動的に統合します。マージ前に変更を確認したい場合はfetchを使用してください。

git reset --soft HEAD~1を使用すると、すべての変更をステージした状態で最後のコミットを取り消せます。変更をアンステージしたいが作業ディレクトリには残したい場合は、代わりにgit reset HEAD~1を使用します。どちらのアプローチも、履歴からコミットを削除しながら作業を保持します。

ブランチの切り替えや新しいブランチの作成など、すべてのブランチ関連の操作にはgit switchを使用してください。git switchはGit 2.23で特にブランチ処理のために導入されましたが、checkoutは複数の関連性のない機能で過負荷のままです。switchはより明確な意図を提供し、混乱を減らします。

git reflogを実行して、削除前にブランチが指していたコミットハッシュを見つけます。次に、git branch branch-name commit-hashを使用してブランチを再作成します。reflogはデフォルトで約90日間すべてのHEADの移動を追跡するため、誤って削除した後でも回復が可能です。

Gain control over your UX

See how users are using your site as if you were sitting next to them, learn and iterate faster with OpenReplay. — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay