Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GitHubよちよち会#3
Search
はない
March 02, 2016
Technology
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitHubよちよち会#3
社内勉強会で使った資料(3回目/全3回)
はない
March 02, 2016
More Decks by はない
See All by はない
2018年目標を達成できなかった私が 今年こそ達成するためにしていること
hanahiroaze
3
540
組み合わせテストを簡単にするgemを作った話
hanahiroaze
0
270
MySQLとデッドロックの話
hanahiroaze
1
1.4k
ここが変だよ。このテスト〜テストケース爆発と戦う〜
hanahiroaze
1
1.6k
Symfony Best Practiceを読もう!(ついでに翻訳した話)
hanahiroaze
2
950
E2E Test Tips
hanahiroaze
0
180
テストことはじめ
hanahiroaze
0
510
Symfony2のi18n対応
hanahiroaze
0
850
開発合宿に行ってきました
hanahiroaze
0
160
Other Decks in Technology
See All in Technology
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
2
530
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
260
2026/09/10 Spring Bootから Jakarta EE/MicroProfileへの移行
megascus
0
310
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
470
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
3
980
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
4
1.1k
コーディングエージェントでM5Stack系の開発を少し試した時の話 / M5 Japan Tour 2026 Autumn 東京
you
PRO
0
150
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
150
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
160
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
300
「図書館」という名前のままでいいのか -Code4Lib JAPANカンファレンス2026 アンカンファレンス報告- / Code4Lib JAPAN Conference 2026: Unconference Report
ykiyota
0
160
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
528
40k
Raft: Consensus for Rubyists
vanstee
141
7.7k
The Curse of the Amulet
leimatthew05
2
14k
Making Projects Easy
brettharned
120
6.7k
RailsConf 2023
tenderlove
30
1.5k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.8k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
270
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
GraphQLとの向き合い方2022年版
quramy
50
15k
Practical Orchestrator
shlominoach
191
12k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Utilizing Notion as your number one productivity tool
mfonobong
4
580
Transcript
GGiittHHuubb よちよち会 第33回 ggiittの履歴を管理しよう!!
A.local R.local 前回のおさらい GitHub.com bugfix add_function bugfix # 忘れ物追加 てへぺろ(・ω<)
$ git push origin bugfix # 最新ソースの取得 $ git fetch $ git merge origin/bugfix $ git merge bugfix # conflictを直接編集して修正
rreebbaassee VVSS mmeerrggee。 TTooddaayy’ss GGooaall rreebbaasseeこわい。 ggiitthhuubb--fflloowwとggiitt--ffllooww。
rreebbaassee iiss…� rreebbaasseeの挙動をおさらいしよう! first release bugfix bugfix master commit 2
commit 1 commit 2 commit 1 $ git rebase master bugfix modify message 変更パッチ として適用 bugfix bbuuggffiixxブランチの差分コミットが、 mmaasstteerrブランチのHHEEAADDの後ろに追加されたよ。
rreebbaassee iiss…� ? WWhhaatt hhaappppeennee nneexxtt??
rreebbaassee iiss…� first release commit 2 commit 1 modify message
bugfix 差分コミットがmmaasstteerrの後ろに着いたので、 FFaasstt--FFoorrwwaarrddできるようになった! first release commit 2 commit 1 modify message bugfix master $ git checkout master $ git merge bugfix master
local wwhheenn yyoouu “ppuullll”…� ppuullllの挙動を確認だ! $ git pull $ git
pull --rebase $ git fetch $ git merge origin/branch_name $ git fetch $ git rebase origin/branch_name clone branch_name origin/branch_name clone mod merge local branch_name origin/branch_name add clone clone mod add add add
local GitHub.com rreebbaasseeこわい first release commit 2 commit 1 master
もうちょっと複雑な場合を考えよう。 merge commit merge modify master
local GitHub.com rreebbaasseeこわい first release commit 2 commit 1 master
mmeerrggeeコミットが残っちゃた。。。 履歴をきれいにするためにrreebbaasseeしたよー! merge modify merge modify rebase modify master 分岐元がなくなっちゃった。。。
rreebbaasseeこわい 全体像
local GitHub.com rreebbaasseeこわい first release commit 2 commit 1 master
mmeerrggeeするために、リモートをppuullllすると・・・ merge modify merge modify rebase modify master merge commit merge commit 消したかった履歴が 戻っちゃう。。。
同じタイムスタンプのコミットが 2つある・・・
((どうすればいいんだよぉ。。。))
local GitHub.com rreebbaasseeこわい first release commit 2 commit 1 master
mmeerrggeeするために、リモートをppuullll ----rreebbaassee すると・・・ merge modify merge modify rebase modify master 差分 patch ・ローカルにしかない ・mmeerrggeeコミット以外 を選んでppaattcchhにするよ
local GitHub.com rreebbaasseeこわい first release commit 1 master ただし・・・ merge
modify merge modify rebase modify master 差分 patch commit 2 差分が多いとうまくできないよ
((bbeesstt pprraaccttiicceeはあるの?))
公開リポジトリにプッシュしたコミットを リベースしてはいけない WWhheenn yyoouu uussee rreebbaassee プッシュする前の作業をきれいに整理する手段 としてだけリベースを使い、まだ公開していな いコミットだけをリベースすることを心がけて いれば、何も問題はありません。
「Pro Git」 p128~134 https://progit-ja.github.io/
あなたは[[コミットの歴史]]を どうとらえますか? rreebbaassee VVSS mmeerrggee 歴史の改�ざんは絶対しない! ログが汚く((読みづらく))なっても、起きたことは 全て記録するべき!! [[コミットの歴史]]はソフトウェア成長の物語! 将来のメンテナンスのためにログは読みやすい
状態に保つべき!!
あなたは[[コミットの歴史]]を どうとらえますか? rreebbaassee VVSS mmeerrggee ログが読みづらい原因は、mmeerrggeeコミットのせ いだとするなら、 を使えばいいじゃない! [[AAuuttoo MMeerrggee]]Œホfl゚¡チ∞ーがいいよね!
PPRRが綺麗になる!!! $ git log --no-merges git log よく使うオプションまとめ http://qiita.com/take4s5i/items/15d8648405f4e7ea3039
あなたは[[コミットの歴史]]を どうとらえますか? rreebbaassee VVSS mmeerrggee
あなたは[[コミットの歴史]]を どうとらえますか? rreebbaassee VVSS mmeerrggee ~pull-requestがconflictしているとき~ グリーンにするための主な選択肢は、二種類あります。 ひとつは、自 分のブランチを、プルリクエストの対象ブランチ (普通は、フォーク元の
リポジトリの master) の先端にリベースすること。 もうひとつは、その対 象ブランチを自分のブランチにマージすることです。 GitHub 上の開発者の多くは、後者を選んでいるようです。その理由 は、先述したとおりです。 重要なのは、そこにいたるまでの歴史と、最 終的にマージしたという事実だと考えているのでしょう。 リベースをす ると、歴史がすっきりするという以外の利点はありません。そして、リベ ースはマージに比べて ずっと 難しいし、間違いを起こしやすいもので す。 「Pro Git」 p228 https://progit-ja.github.io/
ggiitthhuubb--ffllooww ・masterブランチのものは何であれデプロイ可能である ・新しい何かに取り組む際は、説明的な名前のブランチをmasterから作成する (例: new-oauth2-scopes) ・作成したブランチにローカルでコミットし、サーバー上の同じ名前のブランチにも 定期的に作業内容をpushする ・フィードバックや助言が欲しい時、ブランチをマージしてもよいと思ったときは、 プルリクエスト
を作成する ・他の誰かがレビューをして機能にOKを出してくれたら、 あなたはコードをmasterへマージすることができる ・マージをしてmasterへpushしたら、直ちにデプロイをする GitHub Flow (Japanese translation) https://gist.github.com/Gab-km/3705015
ggiitt--ffllooww ・developブランチ 開発を行うためのブランチ。開発者は、主にこのブランチ上で作業を行う。次に紹介する featureブランチなど、他のブランチで行った作業は、ここにマージされる ・featureブランチ 主要な機能を実装するためのブランチ。機能の実装やバグフィックスなど、タスクごとにfeature ブランチを作成し、作業を行う ・releaseブランチ リリースの準備を行うためのブランチ。プロダクトをリリースする前に、このブランチを作成し、微 調整を行う。releaseブランチを作成することで、リリース準備と次のバージョンに向けた開発の
コードを分けることができる ・masterブランチ リリースしたソースコードを管理するためのブランチ。リリース作業を行うと、releaseブランチは masterブランチへマージされて、リリースタグが打たれる。開発者は、このブランチへのコミット は行わない ・hotfixブランチ リリースされたソフトウェアに緊急の修正を行うためのブランチ。このブランチでの修正内容は、 すぐにリリースされるので、hotfixブランチはリリースを管理するmasterブランチへマージされる いまさら聞けない、成功するブランチモデルとgit-flowの基礎知識 http://www.atmarkit.co.jp/ait/articles/1311/18/news017_2.html
bbrraanncchh ppoolliiccyy ? WWhhaatt iiss ddiiffffeerreennccee??
ggiitt--ffllooww VVSS ggiitthhuubb--ffllooww ggiitthhuubb--ffllooww には、「リリース」の概念 がない。 ((mmaasstteerrへのmmeerrggee == 本番デプロイ)) ppuullll--rreeqquueesstt
による開発範囲の表明 $ git commit --allow-empty
HHaavvee aa GGoooodd GGiitt LLiiffee!! TThhaannkk yyoouu!!
AAnnyy qquueessttiioonnss??
Q.
卒業!!!