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
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
720
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
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.1k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
6
1.8k
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
200
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
670
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
4.2k
App Intentsのビルドプロセスを支える技術
kntkymt
0
340
XHTMLが残したもの
yosuke_furukawa
PRO
2
760
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
380
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
150
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
250
Jetpack Compose メカニズム
skydoves
0
350
Security issues being discussed on Web Platforms
petamoriken
0
880
Featured
See All Featured
Thoughts on Productivity
jonyablonski
76
5.4k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
270
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
230
From π to Pie charts
rasagy
0
360
Exploring anti-patterns in Rails
aemeredith
3
500
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Git: the NoSQL Database
bkeepers
PRO
432
67k
A Soul's Torment
seathinner
7
3.6k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
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