すべて 取り消し ブランチ リモート Stash 履歴 マージ

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 statusgit diff を確認する
  • 共有ブランチでは git reset --hard よりも git revert を使用する
  • 作業中の変更を一時保存するには git stash を使用する

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 -- ファイル名 を使用します。

関連する開発者ツール