よく使う、または忘れがちな Git Commandまとめ


はじめに

よく使う便利なコマンドや、いざ使おうと思った時、忘れてしまっていることがあるコマンドをまとめてみました。

1つ前にコミットした差分

git log -p -1

1つ前にコミットしたファイル一覧を表示

git log --stat -1

1つ前のコミットをなかったことにする

git reset --hard HEAD^

ワークディレクトリの内容はそのままで1つ前のコミットをなかったことにする

git reset --soft HEAD^

1つ前のコミットメッセージを修正

git commit --amend

1つ前のコミットユーザを修正したい

git commit --amend --author="user_name <[email protected]>"

1つ前のコミットした時間を今の時間に修正したい

git commit --amend --date "`date -R`"

コミット済みの2以上のコミットを1つのコミットにまとめる

例)aaa.txt ファイルを編集しコミットしたが、漏れがあり、追加編集したコミットを1つにまとめたい

git rebase -i HEAD~~

まとめたいコミットのコマンドを pick から s または squash に変更し保存(:wq 等)

コミットメッセージを修正する画面が表示される

コミットメッセージを修正し保存(:wq 等)

追加の変更を最新のコミットに追加する

変更内容をAddしておく

git add -A

最新のコミットのメッセージのまま追加の変更を最新のコミットに反映

git commit --amend --no-edit

一番最初のコミットを2つ目のコミットとまとめる

git rebase -i --root

派生元のブランチを変更する

git rebase --onto [変更先ブランチ名] [変更前ブランチ名] [対象のブランチ名]

派生元のブランチを更新する場合

git pull --rebase origin [派生元のブランチ名]

リモートのブランチにローカルのブランチを強制一致させる

git reset --hard origin/[ブランチ名]

ブランチの切り替え

git checkout [切り替えたいブランチ名]

ブランチの作成

git checkout -b [作成したいブランチ名]

この時、派生元にするブランチに切り替えておく

ブランチの削除

current branchが削除対象のブランチの場合、以下のエラーが発生し、削除できないので、別のブランチに checkout しておく

error: Cannot delete the branch 'test' which you are currently on.

マージ済みのブランチを削除

git branch --delete [削除したいブランチ名]

マージしていないブランチを削除する場合、以下のエラーが出て、マージされていないとお知らせしてくれる

error: The branch 'test' is not fully merged.
If you are sure you want to delete it, run 'git branch -D test'.

マージしたかどうかを問わずブランチを削除

git branch -D [削除したいブランチ名]

1つ前の作業ブランチに切り替える

git checkout -

指定ファイルを1つ前のコミット時の状態に戻す

git checkout HEAD~ [指定ファイル]

Gitの設定を変更

ユーザ名の設定(local)

git config --local user.name [ユーザ名]

メールアドレスの設定(local)

git config --local user.email [メールアドレス]

設定の確認

git config --list

特定のコミットのみを反映させる

git cherry-pick [コミットID]

特定のコミットを指定のブランチにpush

git push origin [コミットID]:[pushしたいブランチ名]

ファイル名の大文字・小文字の変更を検知

設定の確認

git config -l --local | grep core.ignorecase
検知しない
core.ignorecase=true
検知する
core.ignorecase=false

設定の更新

例)検知するに更新
git config core.ignorecase false

タグのコミットハッシュ取得

git show-ref -s [タグ名]

最後に

筆者は特に commit --amend --authorrebase --onto の書き方を忘れます。
筆者は大量にコンフリクトした時等の考えることを放棄した瞬間、呪文のように git status を唱えています。