Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
git-practice
Search
Tomoki Sugiura
October 02, 2018
Programming
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
git-practice
git講習会で用いたスライド
Tomoki Sugiura
October 02, 2018
More Decks by Tomoki Sugiura
See All by Tomoki Sugiura
CiliumによるKubernetes Network Policyの実現 CNDT2021
shanpu
0
1.4k
naist colloquium-B 2
shanpu
0
250
ricc-20210826
shanpu
0
590
IOT53
shanpu
0
120
RICC-PIoT Workshop 2021
shanpu
0
710
ricc-nii-2020
shanpu
0
150
Cloud Native Kansai #05 LT4
shanpu
1
1.1k
gcpug-kyoto#2-LT1
shanpu
0
730
kubernetes-seminar
shanpu
0
200
Other Decks in Programming
See All in Programming
今さら聞けない .NET CLI
htkym
0
190
Android CLI
fornewid
0
220
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
FDEが実現するAI駆動経営の現在地
gonta
2
280
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
500
the container ship “Apple Silicon”@WWDC26 Recap -Japan-\(region).swift
shingangan
0
120
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
510
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
450
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
130
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
400
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
430
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
110
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
490
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
790
Making Projects Easy
brettharned
120
6.7k
Docker and Python
trallard
47
4.1k
My Coaching Mixtape
mlcsv
0
230
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.8k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
210
GitHub's CSS Performance
jonrohan
1033
470k
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
Transcript
Git Hands-on Presented by shanpu
Topics 1. git clone でリモートのリポを複製する 2. git pull でリモートの変更を反映する 3.
branch を切ってみる 4. conflict を起こす&解消する 5. pull request を送ってみる 6. 作業ブランチがベースブランチから離れてし まったときの対処法 7. GUIクライアントの紹介 2
始める前に… 3 KITnetの場合はプロキシを通す $ git config --global http.proxy http://proxy.cis.kit.ac.jp:8080 $
git config --global https.proxy https://proxy.cis.kit.ac.jp:8080
1. git clone リモートのリポを複製しよう 4
clone ◎ git cloneを入力することでリモートリポジトリを ローカル環境に複製することができる ◎ shanpuのリポジトリをクローンしてみよう 5 $ cd
path/to/your/dir $ git clone https://github.com/chez-shanpu/git-practice.git $ cd git-practice/ $ ls -a
2. git pull リモートのリポの変更を 反映させよう 6
fetch&merge ◎ fetch ◦ リモートリポジトリの変更をローカルリポジトリ (origin/master)へ 反映するコマンド ⇒ファイルは更新されない! ◎ merge
◦ fetchして反映した内容をローカル(master)に反映させる 7 $ git fetch origin master $ git merge origin/master
pull ◎ 現在いるブランチへリモートの変更をマージして くれる ◎ つまりfetchとmergeを同時に行ってくれる ◎ それ以外の使い方をしてはいけない 8 #
masterにいる場合リモートのmasterが反映される $ git pull
3. branch masterにコミットは許さない 9
branch ◎ 一連のコミットに対して分岐をつくる ⇒これを「ブランチを切る」という ◎ ブランチを切り替えることをチェックアウト という ◎ ブランチの切り方は人それぞれ、組織それぞれ だが基本的にmasterで作業することはなく
ブランチを切ってそこで作業する 10
branch ◎ shanpuのリポからブランチを切ってみよう ◎ ブランチ名はpractice/{{ yourname }} 11 $ git
branch practice/{{ yourname }} # branchを確認 $ git branch # チェックアウトしてリモートに反映 $ git checkout practice/{{ yourname }} $ git push origin practice/{{ yourname }}
feature & fix ◎ masterから開発用ブランチdevelopを切るが基本的 にこれに直接コミットしない ◎ 機能単位ごとに次のようなブランチを切る ◦ feature/piyo
: piyo機能を開発するブランチ ◦ fix/hoge : hogeバグを修正するブランチ ◎ それぞれdevelopにマージ ◦ チーム開発のときはpull requestを出して マージしてもらう 12
git-flow ◎ “A successful Git branching model” というブランチ モデルを簡単に導入するためのプラグイン 13
4. conflict 困難を乗り越えることで人は成長 する 14
What’s conflict? ◎ 編集の競合のこと ◎ merge操作で自動的に解消できない変更 ◎ コンフリクトが発生すると修正するまで他の操作 ができない ◎
conflictすることは悪くない. 適切な対処をしよう 15
Example 16
Let’s make conflict 1. practice/{{ yourname }}ブランチから practice/{{ yourname }}-branchA
を切る 2. {{ yourname }}.txtを作成して一行目に{{ yourname }}-Aを記入&コミッ ト 3. practice/{{ yourname }}ブランチから practice/{{ yourname }}-branchB を切る 4. {{ yourname }}.txtを作成して一行目に{{ yourname }}-Bを記入&コミッ ト 5. practice/{{ yourname }}ブランチにチェックアウト 6. practice/{{ yourname }}-Aをpractice/{{ yourname }}にマージ 7. practice/{{ yourname }}-Bをpractice/{{ yourname }}にマージ 8. ⇒ practice/{{ yourname }}-Bのマージ失敗,コンフリクト!! 17
How to solve conflict ? case1 ◎ 手動で頑張る ◎ コンフリクトした箇所にマークが入るのでそれを
見つけていい感じにする 18 <<<<< HEAD << {{ yourname }}-A ===== == {{ yourname }}-B >>>>> {{yourname}}- branchB >> {{ yourname }}-A {{ yourname }}-B
How to solve conflict ? case2 ◎ どちらかに合わせる ◎ もう片方の変更は反映されない
19 # 統合ブランチ(マージされる方)に合わせる $ git checkout --ours {{ yourname }}.txt # トピックブランチ(マージする方)に合わせる $ git checkout --theirs {{ yourname }}.txt
How to solve conflict ? case3 ◎ 諦める(つらいときは逃げてもいいんだよ) ◎ 状況に応じてコマンドを選ぶ
20 # conflict後に何もしていない場合 $ git merge --abort # conflictを修正しようと色々いじった後の場合 $ git reset --hard HEAD # commitまでしたけどやっぱりやめたい場合 $ git reset --hard ORIG_HEAD
Let’s solve conflict ! ◎ 好きな方法でコンフリクトを解消&コミット, プッシュしよう ◎ 諦めることは許さない 21
5. pull request mergeする前に確認してもらう 22
What’s pull request? ◎ 自分の作業内容を取り込んでくださいとお願いす ること ◎ ホスティングサービスの機能 ◦ gitの機能ではない
◎ 自分のブランチをプルリクを出してmasterに マージしてみよう 23
6. 作業ブランチがベースブランチか ら離れてしまったときの対処法 離れ離れになってもきっと大丈夫…! 24
situation ◎ 機能hogeを実装するためにブランチを切ったけど, 気づいたら元のdevブランチの開発が進んでた… ◦ チーム開発ではよくある ◦ devの内容を取り込まないと機能hogeがちゃんと動くか わからない 25
dev
rebase ◎ 作業ブランチの分岐元をベースブランチの最新コ ミッ トに合わせること 26
How to rebase? ◎ トピックブランチ(feature/hoge)にcheckoutしてい る状態で、統合 ブランチ(develop)を取り込む 27 $ git
rebase develop
How to solve conflict when you’re doing rebase ? ◎
次の操作を繰り返す ◦ コンフリクトを解消 ◦ 解消したらcontinue 28 # conflictを解消 $ git add {{ conflicted file }} $ git rebase --continue
rebase & pull request ◎ pull request を出す前にrebaseして最新の 統合ブラン チの変更に合わせる
◦ 最新の統合ブランチでも自分の実装した機能が動くこと を確認する ◎ mergeでいいのでは…? ◦ 個人開発ではそれでもいい ◦ ログが汚れるためOSS開発では忌避される ◦ チーム開発ではメンバー次第(僕はrebaseしてほしい) 29
7. GUIクライアント マウスでポチポチしたい人に向けて 30
Why GUI ? ◎ コマンドのみだと疲れるしミスも出る ◎ 大事なのはプロダクト ◦ git芸人になりたいわけではない ◦
ただコマンドを把握しておくことも大切 31
How to chose ? ◎ 好きなものを使え! ◎ IDE標準搭載のやつでもいい 32
Git Kraken ◎ 僕の推し(これしか使ったことない…) ◎ Windows, Mac, Linuxに対応 ◎ かっこいい
◎ コンフリクト解消のためのツールもなかなかいけてる ◎ 無料版と有料版がある 33
帰る前に… 34 プロキシ設定を解除 $ git config –global –unset http.proxy $
git config –global –unset https.proxy
◎ 京都工芸繊維大学の技術者コミュニティ ◎ 活動内容はいろいろ,各自がやりたいことをやる ◎ Wiki等で知見の共有 ◎ 月一回例会あり ◦ LTしたり事務連絡したり
◎ 部費が0円になりました ◎ 申し込みは公式サイトへ ◦ https://aquatan.studio/ 35
Thank you for listening! 36