Monday, January 22, 2018

Gitのrebaseの重要性




rebaseというのは往々にして看過されがちなgitのコマンドである。また、中身もきちんと見ていくと頭がこんがらがるので、よくわからない、馬鹿にでもわかるようにざっくり説明してくれ、となると以下のようになる。

「mergeは基本歴史が汚れるので、そういうのをもっと綺麗にする」

gitでmergeしていくと、複数人、しかも大規模な人数での開発だとあの人がこれしました、この人がこれしましたみたいな履歴がどんどん山のように積み重なっていく。で、そいつらをまんまくっつけまくってるとぐちゃぐちゃしてごちゃごちゃしてとんでもなくなってしまうということです。

rebaseは、そういうのをどうにかしてくれるということです。

なので、Commitが1000あるようなウンコブランチでも、Commitを一個にできる。
また、過去のCommitを編集したり、Commit同士をくっつけたり、特定のCommitを消すこともrebaseだとできる。

$ git rebase -i develop

などが有名なCommitの編集方法です。弊社では基本まずdevelopブランチが権威あるものなので、こいつ中心で考えると、

$ git checkout develop
$ git pull develop
$ git checkout my_branch
$ git rebase -i develop

というとても面倒臭い事をしなきゃいけないくてとっても残念です。なので僕は以下のスクリプトを使っています

https://github.com/keitaroemotion/gco

で、

$gco pp; git rebase -i develop

なんかやると上の一連の操作をやってくれます(詳しくはソースコードを読んでね)

さらに、

/usr/local/bin/gcopp

みたいなのを作り、そこに

gco pp

みたいに書いた後

$chmod +x /usr/local/bin/gcopp

ってやり、かつ同じ要領で

/usr/local/bin/rid に
git rebase -i develop 
みたいなのを書いて、

$ gcopp; rid

ってうてば全部よしなにやってくれます。


以上

No comments:

Post a Comment