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
740
kubernetes-seminar
shanpu
0
200
Other Decks in Programming
See All in Programming
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
180
JRuby: Past, Present, and Future
headius
0
160
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
510
wkhtmltopdfの次どうするか問題2026
willnet
2
1.6k
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
200
SREの越境 / SRE Collaboration
y0hgi
2
260
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
150
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
290
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
770
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
setup-vp GitLab対応の裏側
naokihaba
0
120
FreeBSDでZabbixを動かす
kenkino
0
310
Featured
See All Featured
Speed Design
sergeychernyshev
33
2.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
KATA
mclloyd
PRO
35
15k
Faster Mobile Websites
deanohume
310
32k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
How STYLIGHT went responsive
nonsquared
100
6.3k
WCS-LA-2024
lcolladotor
0
830
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
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