Awesome Tips
Tipsを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
- 基本操作
- 指定コミットまでの全ファイルを一覧表示
- 直前のブランチへ素早く切り替える
- リモートブランチを削除
- リモートタグを削除
- インデックス(ステージ)の内容でローカル変更を取り消す
- 直前のコミットメッセージを書き換える
- 現在のブランチだけのコミット履歴を表示
- 作者情報を修正
- 変更ファイル全体ではなく一部だけをステージ
- cherry-pickで別ブランチのコミットを取り込む
- スタッシュから単一ファイルを取り出す
- リポジトリから新しいワークツリーを作成(Git 2.5)
- HEADの状態から新しいワークツリーを作成
- 現在のブランチにありmasterへ未マージの全コミットを表示
- コミットメッセージを変えずに直前のコミットを修正
- リモートで削除済みのブランチ参照を整理
- 最初のリビジョンのコミットハッシュを取得
- バンドルからインポート
- コミット時に1ファイルを無視(例: Changelog)
- ID指定のプルリクエストをローカルブランチへ取得
- 削除したファイルを復元
- 特定のコミットハッシュの状態へファイルを復元
- 以前のコミットに対する修正としてマーク
- ステージ領域を経由せずコミット
- 対話的にステージ
- 無視対象ファイルの状態を表示
- 履歴のない新規ブランチをチェックアウト
- 二分探索で原因コミットを特定
- pre-commitとcommit-msgフックを迂回
- 単一ブランチだけをクローン
- 新規ブランチを作成して切り替える
- ローカルブランチを最新コミット順に表示
- リポジトリをシャロークローン
- リモートリポジトリへ強制プッシュ
- コミットを作者とタイトルでグループ化
- 他者の作業を上書きしない安全な強制プッシュ
- ブランチ内のコミット数
- オブジェクトノートを追加
- 別リポジトリのコミットを適用
- 特定の参照をフェッチ
- 未確定変更の概要を生成
- Git状態を短縮表示
- 1日前より前のコミットをチェックアウト
- 現在のブランチをリモートの同名ブランチへプッシュ
- 新しいローカルブランチをリモートへプッシュして追跡
- サブモジュールを最新コミットへ更新
- リポジトリを複製
- スパースチェックアウトで特定ディレクトリだけをクローン
- 出力を列形式で表示
- ワークツリーを一覧表示
- ワークツリーを削除
- ブランチ操作
- ログと履歴
- Git付属の役立つガイドを表示
- 内容から変更を検索
- 特定ファイルの時系列変更を表示
- 競合中の全ファイルを一覧表示
- コミットで変更された全ファイルを一覧表示
- 前回コミット以降の未ステージ変更
- コミット用にステージした変更
- ステージ済み・未ステージ変更を両方表示
- 2週間前からの変更を表示
- masterから分岐後の全コミットを表示
- 追跡中の全ファイルを表示
- 未追跡の全ファイルを表示
- 無視対象の全ファイルを表示
- バージョンツリーを可視化
- reflogからのみ参照されるコミットを含めてツリーを可視化
- 単語単位のインライン差分を表示
- 一般的な差分ツールで変更を表示
- Branch2にないBranch1のコミット
- 直近n件のコミットを一覧表示
- 競合中の全ファイルをエディターで開く
- コミットログのGPG署名を表示
- 別ブランチからファイルを取り出す
- ルートコミットとマージコミットだけを表示
- 名前変更をまたいで特定ファイルのコミットと変更を表示
- 全ブランチのコミットログから指定テキストを検索
- masterから見たブランチ最初のコミットを取得
- 指定ファイルの各行について作者・時刻・最終リビジョンを表示
- 作者ごとの寄与行数を表示
- すべてのgit notesを表示
- 未プッシュのGitコミットを一覧表示
- 空白だけの変更を除いてすべて追加
- 指定範囲をblame
- Gitの論理変数を表示
- リポジトリ名を取得
- 指定期間のログ
- ログから作者を除外
- 直前コミットの変更詳細を展開表示
- 過去30日間のHEAD位置を可視化
- リベース前後のブランチを比較
- テストスクリプトでbisectを自動化
- 行範囲を指定してblame
- blameで移動・コピーされた行を検出
- グラフ付きoneline形式でログ表示
- ファイルが削除されたコミットを検索
- 期間別・作者別のコミット数を表示
- コミット署名を検証
- 単語単位の差分を色付きで表示
- マージとリベース
- その他
- リモート
- セットアップと設定
- プッシュ後の履歴から機密データを削除
- グローバル設定変更後に作者情報を再設定
- GitのBash補完を取得
- Gitエイリアス
- pull時は常にmergeでなくrebase
- 全エイリアスと設定を一覧表示
- Gitで大文字小文字を区別
- カスタムエディターを追加
- タイプミスを自動修正
- 競合解決を記録して再利用
- グローバル設定の項目を削除
- コミット時にファイルモード変更を無視
- Gitの端末カラー出力を無効化
- 個別の色設定
- エイリアス: git undo
- [ローカル/グローバル] Git設定を編集
- 全Gitエイリアスを一覧表示
- リモート接続にHTTPSでなくSSHを使用
- LFからCRLFへの自動置換を防止
- 各レベルの設定を編集
- バックグラウンド保守を有効化して操作を高速化
- GPGでなくSSH鍵でコミット署名
- rerereで再発するマージ競合を自動解決
- 新規リポジトリの既定ブランチ名を設定
- スタッシュ
- サブモジュールとサブツリー
- タグ
- 変更の取り消し
- リモートと同期してローカル変更を上書き
- 最初のコミットへGit reset
- Reset: 未コミットのローカル変更を保持
- Revert: 新しいコミットを作成してコミットを取り消す
- Reset: コミットを破棄(非公開ブランチ向け)
- 未追跡ファイル・ディレクトリの削除前にdry-runで一覧確認
- 未追跡ファイルを強制削除
- 未追跡ディレクトリを強制削除
- assume-unchangedを取り消す
.gitignore対象ファイルをクリーン- dry-run(対応する任意のコマンドで実行可能)
- ステージ済みファイルをステージ解除
- Revert: マージ全体を取り消す
- ファイルを復元(reset/checkout —の新しい代替)
基本操作
指定コミットまでの全ファイルを一覧表示
git ls-tree --name-only -r <commit-ish>直前のブランチへ素早く切り替える
git checkout -Alternatives:
git checkout @{-1}リモートブランチを削除
git push origin --delete <remote_branchname>Alternatives:
git push origin :<remote_branchname>git branch -dr <remote/branch>リモートタグを削除
git push origin :refs/tags/<tag-name>インデックス(ステージ)の内容でローカル変更を取り消す
git checkout -- <file_name>Alternatives:
git restore <file_name>直前のコミットメッセージを書き換える
git commit -v --amend現在のブランチだけのコミット履歴を表示
git cherry -v master作者情報を修正
git commit --amend --author='Author Name <email@address.com>'変更ファイル全体ではなく一部だけをステージ
git add -pcherry-pickで別ブランチのコミットを取り込む
git checkout <branch-name> && git cherry-pick <commit-ish>スタッシュから単一ファイルを取り出す
git checkout <stash@{n}> -- <file_path>Alternatives:
git checkout stash@{0} -- <file_path>リポジトリから新しいワークツリーを作成(Git 2.5)
git worktree add -b <branch-name> <path> <start-point>HEADの状態から新しいワークツリーを作成
git worktree add --detach <path> HEAD現在のブランチにありmasterへ未マージの全コミットを表示
git cherry -v masterAlternatives:
git cherry -v master <branch-to-be-merged>コミットメッセージを変えずに直前のコミットを修正
git add --all && git commit --amend --no-editリモートで削除済みのブランチ参照を整理
git fetch -pAlternatives:
git remote prune origin最初のリビジョンのコミットハッシュを取得
git rev-list --reverse HEAD | head -1Alternatives:
git rev-list --max-parents=0 HEADgit log --pretty=oneline | tail -1 | cut -c 1-40git log --pretty=oneline --reverse | head -1 | cut -c 1-40バンドルからインポート
git clone repo.bundle <repo-dir> -b <branch-name>コミット時に1ファイルを無視(例: Changelog)
git update-index --assume-unchanged Changelog; git commit -a; git update-index --no-assume-unchanged ChangelogID指定のプルリクエストをローカルブランチへ取得
git fetch origin pull/<id>/head:<branch-name>Alternatives:
git pull origin pull/<id>/head:<branch-name>削除したファイルを復元
git checkout <deleting_commit> -- <file_path>特定のコミットハッシュの状態へファイルを復元
git checkout <commit-ish> -- <file_path>以前のコミットに対する修正としてマーク
git commit --fixup <SHA-1>ステージ領域を経由せずコミット
git commit --only <file_path>対話的にステージ
git add -i無視対象ファイルの状態を表示
git status --ignored履歴のない新規ブランチをチェックアウト
git checkout --orphan <branch_name>二分探索で原因コミットを特定
git bisect start # Search start
git bisect bad # Set point to bad commit
git bisect good v2.6.13-rc2 # Set point to good commit|tag
git bisect bad # Say current state is bad
git bisect good # Say current state is good
git bisect reset # Finish search
pre-commitとcommit-msgフックを迂回
git commit --no-verify単一ブランチだけをクローン
git clone -b <branch-name> --single-branch https://github.com/user/repo.git新規ブランチを作成して切り替える
git checkout -b <branch-name>Alternatives:
git branch <branch-name> && git checkout <branch-name>git switch -c <branch-name>ローカルブランチを最新コミット順に表示
git for-each-ref --sort=-committerdate --format='%(refname:short)' refs/heads/リポジトリをシャロークローン
git clone https://github.com/user/repo.git --depth 1リモートリポジトリへ強制プッシュ
git push -f <remote-name> <branch-name>コミットを作者とタイトルでグループ化
git shortlog他者の作業を上書きしない安全な強制プッシュ
git push --force-with-lease <remote-name> <branch-name>ブランチ内のコミット数
git rev-list --count <branch-name>オブジェクトノートを追加
git notes add -m 'Note on the previous commit....'別リポジトリのコミットを適用
git --git-dir=<source-dir>/.git format-patch -k -1 --stdout <SHA1> | git am -3 -k特定の参照をフェッチ
git fetch origin master:refs/remotes/origin/mymaster未確定変更の概要を生成
git request-pull v1.0 https://git.ko.xz/project master:for-linusGit状態を短縮表示
git status --short --branch1日前より前のコミットをチェックアウト
git checkout master@{yesterday}現在のブランチをリモートの同名ブランチへプッシュ
git push origin HEAD新しいローカルブランチをリモートへプッシュして追跡
git push -u origin <branch_name>サブモジュールを最新コミットへ更新
cd <path-to-submodule>
git pull origin <branch>
cd <root-of-your-main-project>
git add <path-to-submodule>
git commit -m "submodule updated"リポジトリを複製
git clone --bare https://github.com/exampleuser/old-repository.git
git push --mirror https://github.com/exampleuser/new-repository.gitスパースチェックアウトで特定ディレクトリだけをクローン
git clone --filter=blob:none --sparse <url> && cd <repo> && git sparse-checkout set <dir1> <dir2>出力を列形式で表示
git branch --columnAlternatives:
git tag --columnワークツリーを一覧表示
git worktree listワークツリーを削除
git worktree remove <path>Alternatives:
git worktree pruneブランチ操作
masterへマージ済みの全ブランチを一覧表示
git branch --merged mastermasterへマージ済みのブランチを削除
git branch --merged master | grep -v '^\*' | xargs -n 1 git branch -dAlternatives:
git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d # will not delete master if master is not checked out全ブランチ、上流、最終コミットを一覧表示
git branch -vv上流ブランチを追跡
git branch -u origin/mybranchローカルブランチを削除
git branch -d <local_branchname>ローカル・リモートの全ブランチを取得
git branch -aリモートブランチだけを取得
git branch -r指定コミットハッシュを含むブランチを検索
git branch -a --contains <commit-ish>Alternatives:
git branch --contains <commit-ish>ブランチ名を変更
git branch -m <new-branch-name>Alternatives:
git branch -m [<old-branch-name>] <new-branch-name>masterブランチをアーカイブ
git archive master --format=zip --output=master.zipリモートでsquashマージ済みのローカルブランチを削除
git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -D履歴付きブランチをファイルへエクスポート
git bundle create <file> <branch-name>現在のブランチ名を取得
git rev-parse --abbrev-ref HEAD現在のブランチの最新タグを表示
git describe --tags --abbrev=0WIPの全ブランチを一覧表示
git checkout master && git branch --no-merged整形済みパッチファイル
git format-patch -M upstream..topicブランチへ切り替える(checkoutの新しい代替)
git switch <branch-name>Alternatives:
git switch -c <new-branch-name>ログと履歴
Git付属の役立つガイドを表示
git help -g内容から変更を検索
git log -S'<a term in the source>'特定ファイルの時系列変更を表示
git log -p <file_name>競合中の全ファイルを一覧表示
git diff --name-only --diff-filter=Uコミットで変更された全ファイルを一覧表示
git diff-tree --no-commit-id --name-only -r <commit-ish>前回コミット以降の未ステージ変更
git diffコミット用にステージした変更
git diff --cachedAlternatives:
git diff --stagedステージ済み・未ステージ変更を両方表示
git diff HEAD2週間前からの変更を表示
git log --no-merges --raw --since='2 weeks ago'Alternatives:
git whatchanged --since='2 weeks ago'masterから分岐後の全コミットを表示
git log --no-merges --stat --reverse master..追跡中の全ファイルを表示
git ls-files -t未追跡の全ファイルを表示
git ls-files --others無視対象の全ファイルを表示
git ls-files --others -i --exclude-standardバージョンツリーを可視化
git log --pretty=oneline --graph --decorate --allAlternatives:
gitk --allgit log --graph --pretty=format:'%C(auto) %h | %s | %an | %ar%d'reflogからのみ参照されるコミットを含めてツリーを可視化
git log --graph --decorate --oneline $(git rev-list --walk-reflogs --all)単語単位のインライン差分を表示
git diff --word-diff一般的な差分ツールで変更を表示
git difftool [-t <tool>] <commit1> <commit2> <path>Branch2にないBranch1のコミット
git log Branch1 ^Branch2直近n件のコミットを一覧表示
git log -<n>Alternatives:
git log -n <n>競合中の全ファイルをエディターで開く
git diff --name-only | uniq | xargs $EDITORコミットログのGPG署名を表示
git log --show-signature別ブランチからファイルを取り出す
git show <branch_name>:<file_name>ルートコミットとマージコミットだけを表示
git log --first-parent名前変更をまたいで特定ファイルのコミットと変更を表示
git log --follow -p -- <file_path>全ブランチのコミットログから指定テキストを検索
git log --all --grep='<given-text>'masterから見たブランチ最初のコミットを取得
git log --oneline master..<branch-name> | tail -1Alternatives:
git log --reverse master..<branch-name> | head -6指定ファイルの各行について作者・時刻・最終リビジョンを表示
git blame <file-name>作者ごとの寄与行数を表示
git log --author='_Your_Name_Here_' --pretty=tformat: --numstat | gawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s
", add, subs, loc }' -Alternatives:
git log --author='_Your_Name_Here_' --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s
", add, subs, loc }' - # on Mac OSXすべてのgit notesを表示
git log --show-notes='*'未プッシュのGitコミットを一覧表示
git log --branches --not --remotesAlternatives:
git log @{u}..git cherry -v空白だけの変更を除いてすべて追加
git diff --ignore-all-space | git apply --cached指定範囲をblame
git blame -L <start>,<end>Gitの論理変数を表示
git var -l | <variable>リポジトリ名を取得
git rev-parse --show-toplevel指定期間のログ
git log --since='FEB 1 2017' --until='FEB 14 2017'ログから作者を除外
git log --perl-regexp --author='^((?!excluded-author-regex).*)$'直前コミットの変更詳細を展開表示
git show過去30日間のHEAD位置を可視化
git reflogリベース前後のブランチを比較
git range-diff <base>..<old-tip> <base>..<new-tip>Alternatives:
git range-diff <rev1>...<rev2>テストスクリプトでbisectを自動化
git bisect start <bad> <good> && git bisect run <script>行範囲を指定してblame
git blame -L <start>,<end> <file>Alternatives:
git blame -L :'<funcname>' <file>blameで移動・コピーされた行を検出
git blame -M -C <file>Alternatives:
git blame -C -C -C <file>グラフ付きoneline形式でログ表示
git log --oneline --graph --all --decorateファイルが削除されたコミットを検索
git log --diff-filter=D --summary | grep deleteAlternatives:
git log --all --full-history -- <file>期間別・作者別のコミット数を表示
git shortlog -sn --since='1 year ago'Alternatives:
git shortlog -sne --allコミット署名を検証
git verify-commit <commit>Alternatives:
git log --show-signature単語単位の差分を色付きで表示
git diff --color-wordsAlternatives:
git diff --word-diff=colorマージとリベース
’feature’を’master’へリベースしてmasterへマージ
git rebase master feature && git checkout master && git merge -リベース前に変更をスタッシュ
git rebase --autostashfixupコミットを通常コミットへsquash
git rebase -i --autosquash対話的リベースで直前2コミットを変更
git rebase --interactive HEAD~22ブランチの共通祖先を検索
git merge-base <branch-name> <other-branch-name>ブランチのベースを変更
git rebase --onto <new_base> <old_base>fixupコミットを作成して自動squash
git commit --fixup=<commit> && git rebase -i --autosquash <commit>~1ルートコミットから対話的にリベース
git rebase -i --rootその他
日常Gitを約20コマンドで
git help everydayファイルを削除せず追跡解除
git rm --cached <file_path>Alternatives:
git rm --cached -r <directory_path>追跡ファイルの変更を考慮しない
git update-index --assume-unchanged <file_name>変更がリリースに含まれるか確認
git name-rev --name-only <SHA-1>無視対象ファイルを一覧表示
git check-ignore *未パックオブジェクト数とディスク使用量を集計
git count-objects --human-readableオブジェクトDBから到達不能オブジェクトをすべて除去
git gc --prune=now --aggressive作業リポジトリをgitwebですぐ閲覧
git instaweb [--local] [--httpd=<httpd>] [--port=<port>] [--browser=<browser>]追跡ファイルからパターン(正規表現または文字列)に一致する行を検索
git grep --heading --line-number 'foo bar'未追跡ファイルをバックアップ
git ls-files --others -i --exclude-standard | xargs zip untracked.zip複数パッチをメール送信
git send-email [<options>] <file|directory>…
git send-email [<options>] <format-patch options>リモート
リモートURLを変更
git remote set-url origin <URL>全リモート参照を取得
git remoteAlternatives:
git remote showリモート名を追加
git remote add <remote-nickname> <remote-url>設定済みの全リモートを一覧表示
git remote -vリモートリポジトリの参照を一覧表示
git ls-remote git://git.kernel.org/pub/scm/git/git.gitリモートブランチ一覧を更新
git remote update origin --pruneオフライン共有用バンドルを作成
git bundle create <file>.bundle --allAlternatives:
git bundle create <file>.bundle <branch-name>バンドルファイルからクローン
git clone <file>.bundle <directory>部分クローンでblobを除外し高速取得
git clone --filter=blob:none <url>Alternatives:
git clone --filter=tree:0 <url>セットアップと設定
プッシュ後の履歴から機密データを削除
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <path-to-your-file>' --prune-empty --tag-name-filter cat -- --all && git push origin --force --allグローバル設定変更後に作者情報を再設定
git commit --amend --reset-author --no-editGitのBash補完を取得
curl -L http://git.io/vfhol > ~/.git-completion.bash && echo '[ -f ~/.git-completion.bash ] && . ~/.git-completion.bash' >> ~/.bashrcGitエイリアス
git config --global alias.<handle> <command>
git config --global alias.st statuspull時は常にmergeでなくrebase
git config --global pull.rebase trueAlternatives:
#git < 1.7.9
git config --global branch.autosetuprebase always全エイリアスと設定を一覧表示
git config --listGitで大文字小文字を区別
git config --global core.ignorecase falseカスタムエディターを追加
git config --global core.editor '$EDITOR'タイプミスを自動修正
git config --global help.autocorrect 1競合解決を記録して再利用
git config --global rerere.enabled 1グローバル設定の項目を削除
git config --global --unset <entry-name>コミット時にファイルモード変更を無視
git config core.fileMode falseGitの端末カラー出力を無効化
git config --global color.ui false個別の色設定
git config --global <specific command e.g branch, diff> <true, false or always>エイリアス: git undo
git config --global alias.undo '!f() { git reset --hard $(git rev-parse --abbrev-ref HEAD)@{${1-1}}; }; f'[ローカル/グローバル] Git設定を編集
git config [--global] --edit全Gitエイリアスを一覧表示
git config -l | grep alias | sed 's/^alias\.//g'Alternatives:
git config -l | grep alias | cut -d '.' -f 2リモート接続にHTTPSでなくSSHを使用
git config --global url.'git@github.com:'.insteadOf 'https://github.com/'LFからCRLFへの自動置換を防止
git config --global core.autocrlf false各レベルの設定を編集
git config --edit --system
git config --edit --global
git config --edit --localバックグラウンド保守を有効化して操作を高速化
git maintenance startAlternatives:
git maintenance run --task=gcGPGでなくSSH鍵でコミット署名
git config gpg.format ssh && git config user.signingkey ~/.ssh/id_ed25519.pub && git commit -S -m '<message>'rerereで再発するマージ競合を自動解決
git config rerere.enabled true新規リポジトリの既定ブランチ名を設定
git config --global init.defaultBranch mainスタッシュ
追跡ファイルの現在状態をコミットせず保存
git stashAlternatives:
git stash push追跡ファイルの未ステージ変更を保存
git stash -kAlternatives:
git stash --keep-indexgit stash push --keep-index未追跡ファイルを含めて現在状態を保存
git stash -uAlternatives:
git stash push -ugit stash push --include-untrackedメッセージ付きで現在状態を保存
git stash push -m <message>Alternatives:
git stash push --message <message>無視・未追跡・追跡中の全ファイル状態を保存
git stash -aAlternatives:
git stash --allgit stash push --all保存済みスタッシュを一覧表示
git stash list任意のスタッシュ内容をパッチ形式で表示
git stash show -p <stash@{n}>一覧から削除せず任意のスタッシュを適用
git stash apply <stash@{n}>最後のスタッシュを適用して一覧から削除
git stash popAlternatives:
git stash apply stash@{0} && git stash drop stash@{0}保存済みスタッシュをすべて削除
git stash clearAlternatives:
git stash drop <stash@{n}>未ステージ変更だけをスタッシュ
git stash push --keep-index特定ファイルをスタッシュ
git stash push -m '<message>' <file1> <file2>スタッシュのdiffstat概要を表示
git stash show --stat <stash@{n}>Alternatives:
git stash show -p <stash@{n}>サブモジュールとサブツリー
全サブモジュールを更新
git submodule foreach git pullAlternatives:
git submodule update --init --recursivegit submodule update --remoteGit追跡中のサブフォルダーをgh-pagesへ配備
git subtree push --prefix subfolder_name origin gh-pagesAlternatives:
git subtree push --prefix subfolder_name origin branch_namesubtreeでプロジェクトをリポジトリへ追加
git subtree add --prefix=<directory_name>/<project_name> --squash git@github.com:<username>/<project_name>.git mastersubtreeで連携プロジェクトの最新変更を取得
git subtree pull --prefix=<directory_name>/<project_name> --squash git@github.com:<username>/<project_name>.git masterタグ
ローカルタグを作成
git tag <tag-name>ローカルタグを削除
git tag -d <tag-name>変更の取り消し
リモートと同期してローカル変更を上書き
git fetch origin && git reset --hard origin/master && git clean -f -d最初のコミットへGit reset
git update-ref -d HEADReset: 未コミットのローカル変更を保持
git reset --keep <commit>Revert: 新しいコミットを作成してコミットを取り消す
git revert <commit-ish>Reset: コミットを破棄(非公開ブランチ向け)
git reset <commit-ish>未追跡ファイル・ディレクトリの削除前にdry-runで一覧確認
git clean -n未追跡ファイルを強制削除
git clean -f未追跡ディレクトリを強制削除
git clean -f -dassume-unchangedを取り消す
git update-index --no-assume-unchanged <file_name>.gitignore対象ファイルをクリーン
git clean -X -fdry-run(対応する任意のコマンドで実行可能)
git clean -fd --dry-runステージ済みファイルをステージ解除
git reset HEAD <file-name>Revert: マージ全体を取り消す
git revert -m 1 <commit-ish>ファイルを復元(reset/checkout —の新しい代替)
git restore <file-name>Alternatives:
git restore --staged <file-name>