Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
git-practice
Tomoki Sugiura
October 02, 2018
Programming
0
87
git-practice
git講習会で用いたスライド
Tomoki Sugiura
October 02, 2018
Tweet
Share
More Decks by Tomoki Sugiura
See All by Tomoki Sugiura
CiliumによるKubernetes Network Policyの実現 CNDT2021
shanpu
0
490
naist colloquium-B 2
shanpu
0
130
ricc-20210826
shanpu
0
210
IOT53
shanpu
0
28
RICC-PIoT Workshop 2021
shanpu
0
290
ricc-nii-2020
shanpu
0
59
Cloud Native Kansai #05 LT4
shanpu
1
550
gcpug-kyoto#2-LT1
shanpu
0
410
kubernetes-seminar
shanpu
0
76
Other Decks in Programming
See All in Programming
Named Document って何?
harunakano
0
580
ebpfとWASMに思いを馳せる2022 / techfeed-conference-2022-ebpf-wasm-amsy810
masayaaoyama
0
770
httputil.ReverseProxy でもリトライがしたい
toga4
0
130
偏見と妄想で語るスクリプト言語としての Swift / Swift as a Scripting Language
lovee
2
300
スモールチームがAmazon Cognitoでコスパよく作るサービス間連携認証
tacke_jp
2
900
roadmap to rust 2024
matsu7874
1
900
LOWYAの信頼性向上とNew Relic
kazumax55
4
370
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
3
610
機能横断型チームにおける技術改善
takeshiakutsu
3
510
クリエイティブ系のウェブサイト制作で役立つCSS技法 / CSS for develop creative website
clockmaker
2
1.7k
Reactでアプリケーションを構築する多様化
sakito
4
3.5k
全国の中高生がプログラミングを学んでいるCloud9環境の仕組み@JAWS-UG_SRE支部_#3
asache3
0
130
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
224
49k
How to name files
jennybc
39
59k
The Art of Programming - Codeland 2020
erikaheidi
32
5.8k
The Power of CSS Pseudo Elements
geoffreycrofte
46
3.9k
Learning to Love Humans: Emotional Interface Design
aarron
261
37k
Faster Mobile Websites
deanohume
294
28k
How to Ace a Technical Interview
jacobian
265
21k
How GitHub (no longer) Works
holman
296
140k
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
268
11k
For a Future-Friendly Web
brad_frost
164
7.4k
Rails Girls Zürich Keynote
gr2m
86
12k
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