universato

Git コマンド集

このドキュメントでは、Gitの基本的なコマンドから、知っていると便利なコマンド、特定の状況で役立つコマンドまでをまとめています。

1. 基本的なコマンド

新しいブランチの作成と切り替え

git switch -c <new_branch>

新しいブランチを作成し、そのブランチに切り替えます。

2. よく使う便利なコマンド

直前のブランチに切り替える

git switch -

直前にいたブランチに素早く切り替えます。git checkout は古いコマンドであり、複数の意味を持つため git switch の使用が推奨されます。

直前のコミットを修正する

git commit --amend

直前のコミットを修正します。ステージングエリアに追加されているファイルがあれば、それらも新しいコミットとして取り込み、直前のコミットを上書きします。

注意点:

リモートブランチを追跡する

git push -u origin <branch_name>

ローカルブランチとリモートブランチの追跡関係を設定します。これにより、次回以降は git pushgit pull を引数なしで実行できるようになり、git status でリモートブランチとの差分も表示されるようになります。-u--set-upstream の略です。

3. 特定の状況で役立つコマンド

インタラクティブにパッチ単位でステージングする

git add -p
git add --patch

ファイル全体ではなく、変更された部分(パッチ)ごとにステージングするかどうかを対話形式で選択できます。これにより、意図しない変更がコミットされるのを防ぎ、コミット内容を細かく制御できます。 git add -igit 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

リモートリポジトリの変更を上書きする際に、ローカルで認識しているリモートの状態と実際のリモートの状態が一致している場合にのみ強制プッシュを実行します。これにより、他の人がプッシュした変更を誤って上書きしてしまうリスクを軽減できます。

ghコマンドによるリモートのブラウザビュー

gitではなく、GitHubのghコマンド。

GitHubのレポジトリを開く方法 (※ ghコマンドを入れておく必要あり。)

gh browse
gh repo view --web

git rebase

GitLens: Enable Interactive Rebase Editor

VSCodeで、GitLensの拡張を入れて、インタラクティブrebaseエディターを有効にして使うようにすると便利かもしれない。

vimだと、dwで消してる。

未追跡ファイルを削除する

git clean -n

Gitで追跡されていないファイルを削除して作業ディレクトリをクリーンアップします。-n (または --dry-run) オプションを付けると、実際に削除されるファイルを事前に確認できます。実際に削除するには -f オプションを使用します。

4. その他の便利な機能

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などのペア推定が破損した場合

5. 設定ファイルとリンク集

Git設定ファイル

gitconfig

[url "https://"]
    insteadOf = git://

暗号化されていない「git://」の代わりに、暗号化されている「https://」を用いる。

古い設定との互換性確保。

リンク集