Site cover image
Git 図解でわかるコミットのIDと修正(amend)

Gitが初めての人にとって、Gitにおけるコミットを理解するのは少し難しいです。

コミットを理解すれば、Pushしたときになぜエラーが起こるのかわかるようになります。

このエントリでは図を多用しながら、Gitにおける「コミット」と「コミットの修正」について説明します。

Image in a image block
コミットには固有のIDがある

コミットは、なんらかの変更(差分)のひとまとまりです。

コミットには固有のIDが自動で割り振られます。

この固有のIDは、40桁のランダムな英数字で、そのパターンは世界中の砂つぶの数よりも多いと言われています。

Gitはこの固有のIDによってコミットが同じかどうかを識別します。

Image in a image block
固有のIDでコミットを見分けている

このコミット固有のIDのことを「コミットID」と呼びます。

コミットIDは、ブランチをローカルからリモートにPushしても変わることはありません。

コミットIDは変わるケースがあります。

先ほど、コミットIDはコミットごとに固有のものと説明しました。

というのも、コミットし直したり、コミットの順番を並べ替えたりするとコミットIDが変わる(=別コミットになる)からです。

Image in a image block
コミットIDは変わるパターンがある

Gitは、コミットを固有のコミットIDによって見分けていると言いました。

すでにリモートにあるコミットを、ローカルで変更し、再度リモートにPushするとどうなるでしょうか?

Image in a image block
PushしたコミットのIDを変えるとエラーになる

リモートではcccの次はdddになっているのに、ローカルではcccの次はddd'になっています。

これでは辻褄が合いません。

このときerror: failed to push some refsというエラーになってしまいます。

Gitを使うにあたって大事なことは、「一度PushしたコミットのIDを変えない」ということです。

慣れないうちは、修正の際にコミットを修正するのではなく、修正を新しいコミットとして追加しましょう。

コミットの修正は、コミットを整理してレビューしやすくできる強力な機能ですが、Gitに慣れるまでは使わなくても良いでしょう。

Gitを使うときは、リモートとローカルの差を頭に入れておき、辻褄を合わせるように意識するということが大切です。

以上です。

このエントリでは図を多用しながら、Gitにおける「コミット」と「コミットの修正」について説明しました。

Gitのブランチとコミットについて図解で復習したい方は、下記の記事が参考になりそうです。


💕
記事が参考になったら少額を寄付いただけると励みになります。
Thank you!
Thank you!
URLをコピーしました

コメントを送る

コメントはブログオーナーのみ閲覧できます