0
0

git 内部の仕組みを見ての学び

Last updated at Posted at 2024-09-17

背景

誤ってdevelopにまだレビュー前のコードをコミットした。
その際、下記を行った。
git reset --hard コミットハッシュ
しかし、コミットハッシュを指定して、developブランチが元に戻る、とは何が起きているのか??と疑問が生じたため、gitの深いところが理解したくなった。

追記:featureにcheckoutしている状態で誤)のコードを実行したことにより、
featureにdevelopをマージするつもりが、
developにfeatureがマージされてしまった。
なぜ(誤)のコードで上記が起きたのかは理由がわからない。

正)git push origin develop
↓
誤)git push develop

目的

今まで雰囲気で使用していたgitを、より何が起きているか理解し、コマンドをより安心して使用できるようにしたい。

本文

  • gitには2つが存在する
    • gitオブジェクト:blob,tree,commit,tag
      • gitオブジェクトはイミュータブルで追加されていくのみ
    • リファレンス:branch,head,tag
      • ポストイットみたいなもので、ハッシュ値を参照する
  • イメージ的には、非巡回グラフ(gitオブジェクト)が作成されて、ポストイット(リファレンス)がついている
  • HEAD
    • 現在チェックアウトしているリファレンス(ブランチ)を指す
    • 現在さし示しているコミットオブジェクトが、VSCODEの左側のコードの状態と同じ。
  • マージ
    • fast-forward:リファレンスが動くだけ
    • non-fast-forward:新しいコミットオブジェクトができてHEADもそこに動く。
  • tag
    • 軽量タグ:ハッシュ値のみ
    • アノテートタグ:ハッシュ値+情報

学び

ブランチやHEADの理解がふんわりしていたがかなり明確になった。

次のステップ

gitを操作していく中で、上記を意識しながら操作する。
mergeやrebaseなどの動きもイメージできるように、再学習をする。

今回学習した動画
https://www.youtube.com/watch?v=eOLuvsRgBCo

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0