DEV Community

d.yoshimitsu
d.yoshimitsu

Posted on

【Git】git reset --softとgit commit --amend

他の人が入手可能であり、別のリポジトリに存在するかもしれないブランチの一部は、書き換えたり、変更したり、交換してはいけません。

git reset --softとは

git resetコマンドはリポジトリと作業ディレクトリを既知の状態に変更します。
git resetは作業ディレクトリの変更を上書きして壊してしまう可能性があります。

git reset --soft commitは、HEADの参照を指定されたコミットに変更します。
インデックスと作業ディレクトリの内容は変更されません。参照の状態を変更して新しいコミットを指すようになるだけです。

インデックスを変更する必要はないものの、コミットメッセージだけは修正したい場合、--softを使うことができます。

$ git reset --soft HEAD^

git commit --amend

カレントブランチで、最新のコミットを変更する方法のうちの1つです。

git commit --amendは、コミット後にミスタイプを修正するためによく使われますが、用途はこれだけではありません。
このコマンドは、コミットと同じようにリポジトリ内のどんなファイルでも修正できます。新しいコミットの一部としてファイルの追加や削除も可能です。

作業ディレクトリ内のファイルを修正します。必要に応じて、誤字を修正し、ファイルの追加や削除しましょう。
他のコミットと同様に、git addやgit rmのようなコマンドを使って変更をインデックスにステージします。
その後、git commit --amendコマンドを実行します。

この修正によって、元のコミットが修正され、既存のコミットが置き換えられます。

どちらを使用するべきか

先頭コミットを変更(git reset --soft HEAD^)したい場合は、git commit --amendを使用しましょう。

Top comments (0)