LoginSignup
0
1

More than 5 years have passed since last update.

ブランチを切り替えずにfast-forwardマージする

Last updated at Posted at 2017-12-27

複数人開発中にremoteで進んだブランチにHEADを切り替えずにfast-forwardマージしたかったけど,
やり方がわからなかったので無理やり実行した話.

コマンド知ってる人教えてください.


gitコマンド

コメントでコマンド教えてもらいました.

$ git fetch github develop:develop


やりたいこと

スクリーンショット 2017-12-27 17.10.16.png

こんな感じでremoteの develop ブランチがコミットされたのでlocalの develop ブランチをfast-forwordマージしたい.
でも今は別のブランチで作業中なので,ブランチの切り替えはしたくない.
fast-forwardマージはマージ時に新しいコミットを作らず,ブランチのポインタの移動だけを行っているはずなので,
どうにかして developブランチ(図の青色の矢印)を指しているポインタをgithub/developブランチ(図の赤色の矢印)に移動させたい.

やったこと

git関連のファイルはリポジトリ内の .git ディレクトリ以下にある.
ブランチの位置はこの中の refs ディレクトリで管理されている.
refsディレクトリの構成はこんな感じ.

$ tree . 
 .
├── heads
│   ├── develop
│   ├── feature
│   │   ├── admin_faq
│   │   └── admin_car_option
│   └── master
├── remotes
│   └── github
│       ├── develop
│       ├── feature
│       │   ├── admin_faq
│       │   └── admin_car_option
│       └── selling-car-api
└── tags

gitのブランチに対応するファイルがある.
ファイルの中身は以下のような感じでコミットのSHA-1が保存されている.

$ cat refs/heads/develop
fe98e89d39747474e969131dac97bbb0dfe9427f

github/develop と同じ所を指すようにすればいいので
heads/develop ファイルを remotes/github/develop ファイルで上書き.

cp refs/remotes/github/develop refs/heads/develop

無事同じ位置に移動されました.
Kobito.cvgrv0.png

0
1
2

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
1