宇宙ドーナツ研究会

セキュリティ系お勉強メモ

gitメモ

rebase

ここ参照。
Git - リベース

# git rebase 統合先
git rebase master

gitリポジトリについて

なんとなく使ってたけど、本質を理解した方がいろいろと使いこなせるので、メモ。
ここがめっちゃ詳しい。
Gitのリポジトリの中身をなるべく正確に理解する | To Be Decided

.git ディレクトリの主な内訳

  • オブジェクト(.git/objects)
  • インデックス(.git/index)
  • 参照(.git/refs)
  • シンボリック参照(.git/symref)
オブジェクト

全てハッシュで表される。
git cat-file -p <HASH> で中身が見れる。

  • ブロブ
    ファイルの中身
  • ツリー
    ディレクトリに相当。ブロブや他ツリーへの参照を持つ。
  • コミットオブジェクト
    コミットに相当。ブロブや他ツリーへの参照を持つ。
  • タグ
    タグ名、コメント、コミットへの参照
インデックス

各ファイルの場所と、それに対応するブロブへのポインタなどの情報が書かれた単一ファイル。
バイナリだけど、git ls-files --stage で内容が見れる。

git add って?

git add した時点で、対象ファイルのスナップショットが、次のコミットのために作成される。
同時に、インデックス内の対象ファイルの項目が、作成されたスナップショットを参照するようになる。

ファイルの変更をaddした後、別ブランチへコミットしようとするとエラーが出るのは、
インデックスにおいて、そのファイルの項目が、参照先を元に戻せなくなってしまうためかと。

git reset って?

要は、元に戻すコマンド。

  • git reset <ファイル名>
    指定ファイルがadd済みの場合、インデックスの参照先をHEADにおけるブロブへ変更する。
    つまり、add と真逆な事をする。

  • git reset <コミット>
    git resetとrevertを図解する | To Be Decided
    HEADを指定コミットに移す。その際、
    –soft:インデックスや作業ディレクトリはそのまま
    –mixed:インデックスを、指定コミットのものへ変更
    – hard:インデックス、作業用ディレクトリともに、指定コミットのものへ変更する

この時、ORIG_HEADが、reset直前のHEADを参照しているコミットを参照するようになる