コミットの書き換え

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

 amendオプションを指定してコミットを行うと、同じブランチの直前のコミットに対して内容を追加やコメントの修正をすることが可能。

・直前のコミット漏れしたファイルを後から追加する

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

 

過去のコミットを打ち消す

 revertでは、指定したコミットの内容を打ち消すコミットを作り出すことができる。rebase-iやresetでコミットを削除することも出来るが、そのコミットがすでに公開済みであった場合は勝手に削除不可能。このような場合は、revertで内容を打ち消すコミットを作り出すことができる。

f:id:mkyosuke:20191224145847p:plain

・過去に公開したコミットを安全に打ち消す

 

コミット捨てる

 resetでは、要らなくなったコミットを捨てることが可能。実行時に影響範囲によって異なるモードを指定することで、インデックスやワークツリーの内容も戻すことが指定できる。

f:id:mkyosuke:20191224151002p:plain

モードにはデフォルトで使用されるmixedの他softとhardがあり、それぞれが影響を与える場所は以下の通り。

 

f:id:mkyosuke:20191224151948p:plain

・変更したインデックスの状態を元に戻す(mixied)

・最近のコミットを完全になかったことにする(hard)

・コミットだけを無かったことにする(soft)

 

コミットを抜き取る

 cherry-pickで、別のブランチから指定したコミットをコピーして、現在のブランチに取り込むことができます。

f:id:mkyosuke:20191224153748p:plain

・ブランチを間違えて追加したコミットを正しい場所に移す

・別ブランチのコミット現在のブランチにも追加する

 

コミットの履歴を書き換える

 rebaseにiオプションを指定すると、コミットの書き換え、入れ替え、削除、統合を行うことができる。

f:id:mkyosuke:20191224155144p:plain

f:id:mkyosuke:20191224155342p:plain

 

f:id:mkyosuke:20191224155704p:plain

・pushする前にコミットコメントを書き直す

・コミット漏れしたファイルを後から追加

 

ブランチ上のコミットを一つにまとめてマージする

 特殊なmergeとして、squashオプションがある。

このオプションを指定してブランチをマージすると、そのブランチのコミット全てをまとめたコミットが追加される。

f:id:mkyosuke:20191224160749p:plain

・トピックブランチ中のコミットを一つにまとめて統合ブランチに統合する。