LoginSignup
1
0

More than 1 year has passed since last update.

branch

branchと聞くと「枝」を想像してしまうので、僕はずっとbranchを「線」みたいなものだと思っていました。

実際、branchとはコミットハッシュを指すポインタのことです。

例えばmainブランチからdevelopmentブランチを切った場合、mainブランチとdeveopmentブランチが指すコミットハッシュは同じものです。

developmentブランチで作業後にコミットした場合、新しいコミットハッシュが作成されますが、developmentブランチはその新しいコミットハッシュを指すようになります(mainブランチが指すコミットハッシュは変わらない)。

公式サイトの図を見るととてもわかりやすいです。

HEAD

HEADは現在作業をしているブランチを指すポインタのことです。
branchがポインタであることを踏まえると、HEADはポインタを指すポインタです。
HEADの移動履歴は下記のコマンドで確認することができます。

    git reflog

HEADはn回前の移動履歴をHEAD@{n}のように表します。
~を使うことでも表現でき、2回前の移動履歴はHEAD~~と書くことができます。

    git reset --hard HEAD@{n}

上記のコマンドでHEADの位置を移動させることができます。
この操作によってHEADが指すブランチが変わることはありません。 <=> ブランチが指すコミットハッシュが変わる(ブランチとHEADが共に移動する)

checkout

chekcoutはHEADを移動させることです。

    git checkout branch_name

checkoutすることによって、ブランチが指すコミットハッシュが変わった場合は、そのコミットハッシュの内容がワークツリーに展開されます。

checkoutと同時にブランチ作成もしたい場合は下記のコマンドで実行することができます。

    git checkout -b new_branch_name

「checkout」は8文字もあるので毎回打つのはめんどくさいと思います。
そんな時はaliasを作成しましょう。

1
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
1
0