Open3

[Git]よく使うコマンド

🦓🦓

変更分を一時的に退避したい

git stash

# 退避した変更を元に戻したい
git stash pop

# 退避したものを確認
git stash list

stash@{0}: WIP on master: f19e36d コミットメッセージ
stash@{1}: WIP on master: 002d58c コミットメッセージ
stash@{2}: WIP on master: 01026e6 コミットメッセージ

# 退避させたものを再度反映させる
git stash apply stash@{0}

# また退避させたものを再度反映して、かつstashを削除したい場合
git stash pop stash@{0}
🦓🦓

直前のコミットを取り消す

最新のコミットを削除することなく、ステージングエリアにコードの変更内容を残したまま、直前のコミットに戻ることができます。

git reset --soft HEAD^
  1. 直前のコミットが取り消される(HEADが一つ前のコミットを指すようになる)。
  2. 直前のコミットの変更内容がステージングエリアに保持される。
  3. ワーキングディレクトリには直前のコミットの変更内容が残り、変更内容を修正できる状態となる。

git reset --hard HEAD^との違い

git reset --hard HEAD^コマンドは、直前のコミットを取り消し、ワーキングディレクトリとインデックス(ステージングエリア)の状態を指定したコミットの状態に完全に戻すGitコマンドです。

このコマンドを実行すると、変更内容は完全に取り消され、指定したコミットより新しい履歴は削除されます。

つまり、変更内容は失われます。
一方、git reset --softは変更内容を保持したまま戻すため、履歴の変更を適切に管理することができます。必要に応じて、変更内容を修正して新しいコミットとして追加することができます。

git revertとの違い

もし既にリモートリポジトリにプッシュした後であれば、git revertコマンドを使って取り消したいコミットを取り消す方法を選択することが推奨されます。

git revertは直前のコミットを取り消すための新しいコミットを作成します。元のコミットの変更内容を反対の変更で取り消します。
元のコミットはそのまま残り、新しいコミットが履歴に追加されます。