SlideShare a Scribd company logo
1 of 6
rebaseにまつわる   3つの誤解
       山本泰宇
       @ymmt2005
rebaseって?

• 最終兵器
 – 文字通り、最終手段として使うべきもの
 – 公開レポジトリ中心の場合、まず避けるべき
• 過去の一連のコミットを
 – 入れ替え、削除、メッセージ変更、修正、合成
• 公開したコミットグラフを rebase すると
 – push できなくなる(強制することはできるが…)
 – 他人の持つコミットグラフと矛盾が生じる
誤解その1
 「こまめにrebaseしないとコンフリクトする」

• こまめに merge で問題ないです
   $ git fetch origin
   $ git merge --no-ff origin/master
 – この直後なら、コンフリクト発生しません
• むしろ毎日 rebase とか大変
 – コミットごとにコンフリクト解消が必要
 – git rerere とかあるけどさ…
誤解その2
  「rebaseしないとコミットログが汚れる」

• git はコミットグラフをたどる機能も強力です
 – git log --first-parent --no-merges
 – git log --graph --pretty='%x09%h %cn%x09%s %d’


• 一直線なコミットログなら Subversion をどうぞ
誤解その3
 「試行錯誤をみせたくなければrebase」

• squash merge でレビュー用にまとめられます
   $   (DEVブランチで開発して適当にコミット)
   $   git fetch origin
   $   git checkout -b TOPIC origin/master
   $   git merge --squash DEV
   $   git commit

• その後の修正コミットは squash しないでしょ?
 – だから rebase もいらない
おまけ
• merge は --no-ff
  – fast-forward しちゃうとマージが追えなくなる
  – 本当の意味で履歴を追うのが辛くなっちゃいます
     • 目視でコミット内容を確認するしかなくなる


• --no-ff しかしないようにもできます
  $ git config --global merge.ff false

More Related Content

Viewers also liked

SVN経験者のためのGIT入門
SVN経験者のためのGIT入門SVN経験者のためのGIT入門
SVN経験者のためのGIT入門AimingStudy
 
とある脆弱性の永い議論
とある脆弱性の永い議論とある脆弱性の永い議論
とある脆弱性の永い議論Mtikutea
 
アーキテクトになるには
アーキテクトになるにはアーキテクトになるには
アーキテクトになるにはymmt
 
プログラマ人生論
プログラマ人生論プログラマ人生論
プログラマ人生論ymmt
 
Git, Github超入門
Git, Github超入門Git, Github超入門
Git, Github超入門Tomoki Saito
 
kintoneだけで頑張らない
kintoneだけで頑張らないkintoneだけで頑張らない
kintoneだけで頑張らないCybozucommunity
 
【基調講演】変える覚悟、変わる覚悟。
【基調講演】変える覚悟、変わる覚悟。【基調講演】変える覚悟、変わる覚悟。
【基調講演】変える覚悟、変わる覚悟。Cybozucommunity
 
各アプリケーションの概要(パッケージ版)
各アプリケーションの概要(パッケージ版)各アプリケーションの概要(パッケージ版)
各アプリケーションの概要(パッケージ版)Cybozucommunity
 
kintoneで実現する働き方改革支援事業 サテライトシェアオフィス「New Work」
kintoneで実現する働き方改革支援事業 サテライトシェアオフィス「New Work」kintoneで実現する働き方改革支援事業 サテライトシェアオフィス「New Work」
kintoneで実現する働き方改革支援事業 サテライトシェアオフィス「New Work」Cybozucommunity
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!ymmt
 
会社紹介スライド Lineked in
会社紹介スライド Lineked in会社紹介スライド Lineked in
会社紹介スライド Lineked inTakatoshi Satoh
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)lestrrat
 
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]【kintone便利に使おうシリーズ】[vol.07 プロセス管理]
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]Cybozucommunity
 

Viewers also liked (13)

SVN経験者のためのGIT入門
SVN経験者のためのGIT入門SVN経験者のためのGIT入門
SVN経験者のためのGIT入門
 
とある脆弱性の永い議論
とある脆弱性の永い議論とある脆弱性の永い議論
とある脆弱性の永い議論
 
アーキテクトになるには
アーキテクトになるにはアーキテクトになるには
アーキテクトになるには
 
プログラマ人生論
プログラマ人生論プログラマ人生論
プログラマ人生論
 
Git, Github超入門
Git, Github超入門Git, Github超入門
Git, Github超入門
 
kintoneだけで頑張らない
kintoneだけで頑張らないkintoneだけで頑張らない
kintoneだけで頑張らない
 
【基調講演】変える覚悟、変わる覚悟。
【基調講演】変える覚悟、変わる覚悟。【基調講演】変える覚悟、変わる覚悟。
【基調講演】変える覚悟、変わる覚悟。
 
各アプリケーションの概要(パッケージ版)
各アプリケーションの概要(パッケージ版)各アプリケーションの概要(パッケージ版)
各アプリケーションの概要(パッケージ版)
 
kintoneで実現する働き方改革支援事業 サテライトシェアオフィス「New Work」
kintoneで実現する働き方改革支援事業 サテライトシェアオフィス「New Work」kintoneで実現する働き方改革支援事業 サテライトシェアオフィス「New Work」
kintoneで実現する働き方改革支援事業 サテライトシェアオフィス「New Work」
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
 
会社紹介スライド Lineked in
会社紹介スライド Lineked in会社紹介スライド Lineked in
会社紹介スライド Lineked in
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
 
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]【kintone便利に使おうシリーズ】[vol.07 プロセス管理]
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]
 

Recently uploaded

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (10)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

rebaseにまつわる3つの誤解

  • 1. rebaseにまつわる 3つの誤解 山本泰宇 @ymmt2005
  • 2. rebaseって? • 最終兵器 – 文字通り、最終手段として使うべきもの – 公開レポジトリ中心の場合、まず避けるべき • 過去の一連のコミットを – 入れ替え、削除、メッセージ変更、修正、合成 • 公開したコミットグラフを rebase すると – push できなくなる(強制することはできるが…) – 他人の持つコミットグラフと矛盾が生じる
  • 3. 誤解その1 「こまめにrebaseしないとコンフリクトする」 • こまめに merge で問題ないです $ git fetch origin $ git merge --no-ff origin/master – この直後なら、コンフリクト発生しません • むしろ毎日 rebase とか大変 – コミットごとにコンフリクト解消が必要 – git rerere とかあるけどさ…
  • 4. 誤解その2 「rebaseしないとコミットログが汚れる」 • git はコミットグラフをたどる機能も強力です – git log --first-parent --no-merges – git log --graph --pretty='%x09%h %cn%x09%s %d’ • 一直線なコミットログなら Subversion をどうぞ
  • 5. 誤解その3 「試行錯誤をみせたくなければrebase」 • squash merge でレビュー用にまとめられます $ (DEVブランチで開発して適当にコミット) $ git fetch origin $ git checkout -b TOPIC origin/master $ git merge --squash DEV $ git commit • その後の修正コミットは squash しないでしょ? – だから rebase もいらない
  • 6. おまけ • merge は --no-ff – fast-forward しちゃうとマージが追えなくなる – 本当の意味で履歴を追うのが辛くなっちゃいます • 目視でコミット内容を確認するしかなくなる • --no-ff しかしないようにもできます $ git config --global merge.ff false