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
git-practice
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
600
IOT53
shanpu
0
130
RICC-PIoT Workshop 2021
shanpu
0
720
ricc-nii-2020
shanpu
0
150
Cloud Native Kansai #05 LT4
shanpu
1
1.1k
gcpug-kyoto#2-LT1
shanpu
0
740
kubernetes-seminar
shanpu
0
200
Other Decks in Programming
See All in Programming
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
220
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
残高管理から台帳サービスへの進化
artoy
1
200
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
AmebaブログはKMPから卒業します
kmars0605
0
200
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
500
Performance Optimization With LLMs
xleitix
0
110
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
Domain-Driven Transformation
hschwentner
2
2.3k
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
Featured
See All Featured
KATA
mclloyd
PRO
35
16k
エンジニアに許された特別な時間の終わり
watany
109
250k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
RailsConf 2023
tenderlove
30
1.6k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
We Have a Design System, Now What?
morganepeng
55
8.4k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
Embracing the Ebb and Flow
colly
88
5.2k
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