Git 状況別コマンドファインダー — 無料オンラインツール
状況に応じた正確なGitコマンドを検索。シナリオをクリックすると、コマンドの説明と安全性に関する警告が表示されます。
Git 状況別コマンドリファレンス
Gitは強力ですが、特にあまり使わない操作ではコマンド構文を覚えにくいものです。このツールは、実際のGitの状況を正確なコマンドに対応させ、分かりやすい説明と、元に戻せない操作への警告を提供します。
破壊的な操作と安全な操作
一部のGit操作は安全で可逆的です(コミット、ブランチ、Stash)。一方、不注意に使用すると履歴を永続的に変更したりデータを失う可能性のある操作もあります:
- 安全: git stash, git branch, git checkout, git merge, git commit
- 注意が必要: git reset --hard, git push --force, git rebase(履歴を書き換え), git clean -fd
- 共有ブランチでは絶対にやらないこと: main/masterへのフォースプッシュ、公開コミットのrebase
Gitベストプラクティス
- 変更を加える前に必ずブランチを作成する — mainで直接作業しない
- 明確で分かりやすいメッセージで頻繁にコミットする
- コミット前に
git statusとgit diffを確認する - 共有ブランチでは
git reset --hardよりもgit revertを使用する - 作業中の変更を一時保存するには
git stashを使用する
チームのためのGitワークフロー:適切な戦略の選択
適切なGitワークフローの選択は、チームの生産性に最も影響を与える決定の一つです。間違ったワークフローはマージコンフリクト、デプロイのブロック、コードレビューの遅延を引き起こします。以下は最も人気のある戦略とそれぞれの使用場面です。
人気のGitブランチ戦略
- GitHub Flow: シンプルで効果的。mainからフィーチャーブランチを作成し、PRを開き、レビュー後にマージ。継続的デプロイメントと小規模で頻繁なリリースを行うチームに最適。GitHub、Shopify、多くのスタートアップで使用。
- GitFlow: develop、feature、release、hotfixブランチを使用。より構造化されていますが重い。スケジュールされたリリースを持つチーム(モバイルアプリ、エンタープライズソフトウェア)に最適。
- トランクベース開発: 全員がmain(トランク)に頻繁にコミットし、短命のフィーチャーブランチ(最大1〜2日)を使用。未完成の作業にはフィーチャーフラグが必要。Google、Facebook、Netflixで使用。強力なCI/CDを持つ経験豊富なチームに最適。
すべての開発者がマスターすべきGitコマンド
- git rebase -i: インタラクティブリベースでは、プッシュ前にコミットをスカッシュ、並べ替え、編集、削除できます。クリーンでレビューしやすいコミット履歴に不可欠。git rebase -i HEAD~5で直近5コミットを再構築。
- git bisect: バグを導入したコミットを見つけるための二分探索。git bisect run <test-command>で自動化可能。1000コミットの中からわずか10ステップでバグを発見できます。
- git stash: ブランチを切り替えるために変更を一時的に退避。git stash push -m "説明"でメッセージ付きで保存し、各stashの内容を覚えておけます。
- git reflog: セーフティネット — リセットやリベース後でも、すべてのHEADの移動を表示します。コミットを失った場合、git reflogで90日以内なら復元できます。
Gitに関するよくある質問
最後のGitコミットを変更を失わずに取り消すには?
git reset --soft HEAD~1 を使用すると、最後のコミットを取り消しつつすべての変更をステージングされた状態で保持できます。git reset HEAD~1(mixedモード、デフォルト)を使用すると、コミットを取り消してステージングも解除しますが、作業ディレクトリには変更が残ります。git reset --hard HEAD~1 はすべての変更を完全に破棄します。一度実行すると元に戻せません。
ローカルとリモートのブランチを削除するには?
ローカルブランチの削除には git branch -d ブランチ名(安全、マージ済みが条件)または git branch -D ブランチ名(強制削除)を使用します。リモートブランチの削除には git push origin --delete ブランチ名 を使用します。古いリモート追跡参照のクリーンアップには git fetch --prune または git remote prune origin を実行します。
git mergeとgit rebaseの違いは?
git merge は2つのブランチを結合する新しいマージコミットを作成し、完全な履歴を保持します。git rebase はコミットを別のブランチの上にリプレイし、よりクリーンな直線的な履歴を生成します。公開・共有ブランチにはmergeを使用してください — 安全で非破壊的です。rebaseはマージ前のローカルフィーチャーブランチにのみ使用します。共有リモートにプッシュ済みのコミットを絶対にrebaseしないでください — 履歴が書き換わり、他の貢献者が分岐した履歴を調整する必要が発生します。
最後のコミットで何が変わったか確認するには?
git show を使用すると、最新のコミットのdiff(コミットメッセージ、作成者、日付、完全なパッチを含む)を確認できます。完全なdiffなしのサマリーには git show --stat を使用します。2つの特定のコミットを比較するには git diff commit1 commit2 を使用します。特定のファイルの履歴を見るには git log --follow -p -- ファイル名 を使用します。
関連する開発者ツール
- SemVerカリキュレーター — セマンティックバージョンのバンプを計算し、npmバージョン範囲を検証
- Docker Composeジェネレーター — ネットワーク、ボリューム、環境変数付きのdocker-compose.ymlを生成
- .ENVファイルインスペクター — 公開されたシークレットを検出し、安全な.env.exampleファイルを生成
- Regexテスター&エクスプレイナー — ライブハイライトと説明付きでRegexパターンをテスト
- すべての無料開発者ツールを見る