12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

1分で実現できる有用な技術Advent Calendar 2015

Day 6

Gitのブランチを移動するときの裏ワザ

Posted at

Gitでは、簡単にブランチを切れるようになっていますが、その中身を知れば、より便利に移動できます。なお、この投稿は1分で実現できる有用な技術 Advent Calendar 2015の1記事として投稿しています。

Gitツリーの構造

ちょうどGitのアドベントカレンダーの投稿が参考になりますのでので、詳細についてはそこを参照させていただく形にします。

こちらで必要な程度に要約すれば、

  • コミットは、それ自体が過去のコミットとの関連情報を持っている
  • 「ブランチ」と呼ばれるものも、自律的につながったコミットのある1箇所を指すポインタに過ぎない

ということです。

微妙に面倒な切り替え→マージ

よくある場面で、「Aブランチの後にBブランチが続いている状況で、BブランチをAブランチに追いつかせた上でチェックアウトしたい」というときがあります。素直にやれば、

  • git checkout b
  • git merge a

のようになりますが、いったんワークエリアをBのものに変更して、それからまたAの状態まで戻すというのは、(そこまで速度を食う場面も多くはないでしょうが)なんとも富豪的ですっきりしないものです。

ブランチの位置だけずらす

そこで、git update-refというコマンドがあります。これを使えば、チェックアウトしない状態でもブランチの位置だけずらしてしまうことができます。

git update-ref refs/heads/b HEADとすることであらかじめBのブランチを先頭までずらしておいて、それからチェックアウトすればワークエリアはそのままにチェックアウトできます。

12
11
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
12
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?