このドキュメントでは、Gitの基本的なコマンドから、知っていると便利なコマンド、特定の状況で役立つコマンドまでをまとめています。
git switch -c <new_branch>
新しいブランチを作成し、そのブランチに切り替えます。
git switch -
直前にいたブランチに素早く切り替えます。git checkout は古いコマンドであり、複数の意味を持つため git switch の使用が推奨されます。
git commit --amend
直前のコミットを修正します。ステージングエリアに追加されているファイルがあれば、それらも新しいコミットとして取り込み、直前のコミットを上書きします。
注意点:
git push --force または git push --force-with-lease が必要になります。--no-edit オプションを使用すると、コミットメッセージを編集せずにステージングエリアの変更を直前のコミットに含めることができます。git push -u origin <branch_name>
ローカルブランチとリモートブランチの追跡関係を設定します。これにより、次回以降は git push や git pull を引数なしで実行できるようになり、git status でリモートブランチとの差分も表示されるようになります。-u は --set-upstream の略です。
git add -p
git add --patch
ファイル全体ではなく、変更された部分(パッチ)ごとにステージングするかどうかを対話形式で選択できます。これにより、意図しない変更がコミットされるのを防ぎ、コミット内容を細かく制御できます。
git add -i は git add -p を含む、より総合的なインタラクティブモードです。
git add -u
git add --update
新規ファイルを含めず、既にGitで追跡されているファイルのうち、変更されたものだけをステージングします。
git restore -s <commit> -- path/to/file
git restore --source <commit> -- path/to/file
指定した <commit> (ブランチ名でも可) の時点の path/to/file を現在の作業ディレクトリに復元します。-- は、これ以降がファイルパスであることを明示するための区切り文字です。
git checkout は「ブランチ切り替え」と「ファイル復元」の二つの機能が混在しており混乱を招くため、git switch (ブランチ切り替え) と git restore (ファイル復元) に分離されました。git checkout の使用は非推奨です。
git reset --hard
ローカルの変更をすべて破棄し、HEADが指すコミットの状態に強制的に戻します。強力なコマンドなので、変更を完全に破棄しても問題ない場合にのみ使用してください。
git fetch
リモートリポジトリから最新のコミット履歴やブランチ情報を取得しますが、ローカルの作業ブランチにはマージしません。これにより、ローカルの作業に影響を与えずにリモートの状況を確認できます。
git push --force-with-lease
リモートリポジトリの変更を上書きする際に、ローカルで認識しているリモートの状態と実際のリモートの状態が一致している場合にのみ強制プッシュを実行します。これにより、他の人がプッシュした変更を誤って上書きしてしまうリスクを軽減できます。
gitではなく、GitHubのghコマンド。
GitHubのレポジトリを開く方法 (※ ghコマンドを入れておく必要あり。)
gh browse
gh repo view --web
GitLens: Enable Interactive Rebase Editor
VSCodeで、GitLensの拡張を入れて、インタラクティブrebaseエディターを有効にして使うようにすると便利かもしれない。
vimだと、dwで消してる。
git clean -n
Gitで追跡されていないファイルを削除して作業ディレクトリをクリーンアップします。-n (または --dry-run) オプションを付けると、実際に削除されるファイルを事前に確認できます。実際に削除するには -f オプションを使用します。
git diff のフィルターオプションgit diff --diff-filter=ACMRT
--diff-filter オプションを使用すると、特定の種類の変更があったファイルのみを git diff の結果に表示できます。
| 文字 | 種類名 | 説明 |
|---|---|---|
| A | Added | 新しく追加されたファイル |
| C | Copied | コピーされたファイル (Gitがコピーと判断) |
| D | Deleted | 削除されたファイル |
| M | Modified | 内容が変更されたファイル |
| R | Renamed | ファイル名が変更されたファイル |
| T | Type changed | ファイルタイプが変化 (例: 通常ファイル → シンボリックリンク) |
| U | Unmerged | マージコンフリクトが未解決のファイル |
| X | Unknown | Gitが分類できない変更 |
| B | Broken pairing | rename/copyなどのペア推定が破損した場合 |
.git/info/exclude: .gitignore と同様に無視するファイルを指定できますが、この設定はローカルリポジトリのみに適用され、他の開発者には共有されません。ブランチごとに置く必要がないので、あとからすぐ使えて便利。デメリットは見えない場所にあるので、ここに設定していることを忘れる可能性がある。.gitattributes: ファイルの属性(例: テキストファイルの改行コード、マージ戦略など)を定義します。~/.gitconfig: グローバルなGit設定ファイル。ユーザー名、メールアドレス、エイリアスなどを設定します。[url "https://"]
insteadOf = git://
暗号化されていない「git://」の代わりに、暗号化されている「https://」を用いる。
古い設定との互換性確保。