Gitコマンドチートシート

次へ

Gitには約150のサブコマンドがあり、そのいくつかは危険なほど似ています、reset vs restorecheckout vs switchrm vs restore --staged。このチートシートは、実際に打ち込むコマンドを状況別にまとめています:日常のワークフロー、ブランチ、ミスの取り消し、stash。グループを選んでブロックをコピーしてください。

チートシートの使い方

  1. 1

    トピックを選ぶ

    日常、ブランチ、取り消し、stash:それぞれが異なる思考モードに対応します。

  2. 2

    ブロックをざっと見る

    各行は完全に動作するコマンドです:明示的に示されない限り、山かっこのプレースホルダーはありません。

  3. 3

    必要なものをコピー

    ターミナルに貼り付け、ブランチ名やコミットのSHAを調整して実行します。

熟練ユーザーでもなおコマンドに混乱する理由

Gitのporcelainは継ぎ足しで成長しました。checkoutは「ブランチを切り替える」と「ファイルを復元する」に多重定義され、resetは「作業を破棄する」と「ブランチのポインターを動かす」の間に位置します。Git 2.23以降は、より明確な動詞があります。

新(より明確)
git checkout branch git switch branch
git checkout -b new git switch -c new
git checkout -- file git restore file
git checkout --staged file git restore --staged file

安全な取り消しのはしご

  1. 1つのファイルを復元git restore path/to/file(未ステージ)またはgit restore --staged path/to/file(ステージ済みだが未コミット)。
  2. 直前のコミットを取り消し、変更を残すgit reset --soft HEAD~1
  3. 直前のコミットを取り消し、変更を破棄git reset --hard HEAD~1(破壊的。未コミットの作業がないことを確認)。
  4. 共有されたコミットを取り消すgit revert <sha>、古いコミットを打ち消す新しいコミットを作ります。プッシュ済みの履歴でも安全です。

stashのエチケット

  • 常にメッセージ付きでstashする:git stash push -m "wip: APIを接続中"
  • popする前にgit stash listでstashを一覧表示する、無名のstashはすぐに溜まります。
  • git stash popは適用して削除し、git stash applyは適用して残します。

復旧

ハードリセットの後にコミットを失いましたか?おそらくまだreflogにあります。git reflogを実行して過去90日のHEADの移動をすべて確認し、git reset --hard <sha>で良い状態に戻ってください。

よくある質問

Git 2.23(2019年8月)以降、プロジェクトは多重定義されたcheckout動詞を2つに分けました。switchはブランチを変え、restoreはファイルを直します。後方互換のため両方とも存在しますが、シェルの履歴を見返すときに読みやすくなります。

resetはブランチのポインターを(任意で作業ツリーも)動かします。revertは前のコミットを取り消す新しいコミットを作ります、共有ブランチで安全です。checkout / restoreは履歴を書き換えずに作業ツリーのファイルを変えます。

git revert <sha>で補償するコミットを追加し、それをプッシュします。チームが明示的に合意していない限り、共有ブランチでのgit reset --hardgit push --forceは避けてください。

コマンドはページ内で描画される静的なテキストです。選択したトピックは、対応するコマンドを表示するためだけにサーバーへ送信され、2つのステップ間を移動するときはページのリンクにも含まれます。保存や記録はされません。

関連ツール

このツールは他の言語でも利用できます