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
実務で失敗しない「GitHub」
Search
Tonoyama
January 10, 2021
Programming
360
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
実務で失敗しない「GitHub」
学内の勉強会で発表したスライド達です。
Tonoyama
January 10, 2021
More Decks by Tonoyama
See All by Tonoyama
LINE Botで「しりとり」を作ろう
tonoyama
0
520
情報特許論「新しいディスプレイ」
tonoyama
0
440
特許「量子ニューラルネットワーク」について
tonoyama
0
83
今年の目標と注目技術
tonoyama
2
170
Other Decks in Programming
See All in Programming
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
360
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
490
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
320
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
190
5分で問診!Composer セキュリティ健康診断
codmoninc
0
240
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
110
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.1k
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
420
symfony/aiとlaravel/boost
77web
0
130
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
180
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.9k
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
870
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Color Theory Basics | Prateek | Gurzu
gurzu
0
390
KATA
mclloyd
PRO
35
15k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
240
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
880
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
Become a Pro
speakerdeck
PRO
31
6k
New Earth Scene 8
popppiees
3
2.4k
We Have a Design System, Now What?
morganepeng
55
8.2k
Transcript
࣮Ͱࣦഊ͠ͳ͍ʮ(JU)VCʯ ʙޮྑ͘ɺਖ਼֬ʹࣄΛ͜ͳ͢ʙ 1
ࣗݾհ 2 !5POPZBNB 5XJUUFSɿ!ZVEBJUPOPZBNB ژͷ8FCܥࣗࣾ։ൃاۀʹͯओʹ +BWB4DSJQUΛ͍։ൃͷΞϧόΠτΛ ͍ͯ͠·͢ɻ࠷ۙɺ($1ͷ"1*ؔ࿈ झຯɿඒຯ͍͠ྉཧΛ৯Δ͜ͱ
ࠓճͷ࣍ ͡Ίʹ ࣄͰͷ(JU)VCϑϩʔ (JU)VCϑϩʔ͔ΒݟΔʮΒ͔͠ʯ ɾ։ൃͷ४උ ɾ։ൃ։࢝ʂ ɾ࣍ͷ։ൃ (JU)VCΛศརʹ͢Δπʔϧɾখٕ 3
࣍ ͡Ίʹ 1 ࣄͰͷ(JU)VC 1 (JU)VCϑϩʔ͔ΒݟΔʮΒ͔͠ʯ ɾ։ൃͷ४උ 1d ɾ։ൃ։࢝ʂ 1d
ɾ࣍ͷ։ൃ 1d (JU)VCΛศརʹ͢Δπʔϧɾখٕ 1d 4
͡Ίʹ 5
جຊɺ࣮ͷ(JU)VCͰ͍͜͠ͱ͠ͳ͍ 6 جຊతʹਓͰϦϙδτϦʹQVTI͢Δͷͱ มΘΒͳ͍ɻϒϥϯνͷૢ࡞͕ೖΔఔɻ ͔͠͠ɺ ;ͱͨ͠ෆҙΞΫγσϯτͰ Β͔ͨ͠߹ɺ͙͢ʹదʹରॲͰ͖Δ͔ ͰਐͱਓࣄධՁʹେ෯ͳ͕ࠩੜ·ΕΔɻ ॳ৺ऀ ܦݧऀ
ޙ ޙ
࣍ ͡Ίʹ 1 ࣄͰͷ(JU)VC 1 (JU)VCϑϩʔ͔ΒݟΔʮΒ͔͠ʯ ɾ։ൃͷ४උ 1d ɾ։ൃ։࢝ʂ 1d
ɾ࣍ͷ։ൃ 1d (JU)VCΛศརʹ͢Δπʔϧɾখٕ 1d 7
ࣄͰͷ(JU)VC 8
ݸਓͱࣄͰҧ͏(JU)VCૢ࡞ͷ ݸਓ ձࣾ ݸਓ ࣗͷϑΝΠϧ͕ফࣦͯࣗ͠ͷɻ ϦϙδτϦͷ࡞Γͳ͓͠Ͱ͖Δ ձࣾ ਐ͕େ෯ʹΕͯ͠·͏ɻ ࠷ѱɺ͕ফ͑ͨ߹ɺଞͷϝϯόʔ ͚ͩͰͳ͘ɺձࣾશମʹ໎͕͔͔Δɻ
ࣦഊ͠ͳ͍ͨΊͷ͕ࣝඞཁ 9 ˣ
࣍ ͡Ίʹ 1 ࣄͰͷ(JU)VC 1 (JU)VCϑϩʔ͔ΒݟΔʮΒ͔͠ʯ ɾ։ൃͷ४උ 1d ɾ։ൃ։࢝ʂ 1d
ɾ࣍ͷ։ൃ 1d (JU)VCΛศརʹ͢Δπʔϧɾখٕ 1d 10
(JU)VCϑϩʔ͔ΒݟΔ ҙͱΒ͔͠ 11
ීஈͷ(JU)VCϑϩʔ 12 ࣗ ઌഐ νʔϜϦʔμ ϨϏϡʔ ֬ೝ ࠓճϨϏϡʔΛड͚ΔϓϧϦΫ ͷલʢ(JU)VCͷૢ࡞ʣ·Ͱͷ
(JU)VCͰΑ͘͏ίϚϯυΛ࣌ܥྻॱʹհ ։ൃͷ४උ HJUDPOpHcϢʔβʔใΛೖྗ HJUDMPOF<ϦϙδτϦ63->cϦϞʔτϦϙδτϦΛμϯϩʔυ HJUCSBODI<ϒϥϯν໊>cϒϥϯνͷ࡞ HJUTXJUDI <ϒϥϯν໊>cϒϥϯνͷҠಈ ։ൃ։࢝ʂ HJUTUBUVTcมߋ༰ͷঢ়ଶΛ֬ೝ͢Δ HJUBEE<มߋϑΝΠϧ໊>cมߋΛొ͢Δ
HJUDPNNJUNlϝοηʔδz cίϛοτΛ࡞ HJUQVTIPSJHJO<ϒϥϯν໊>cϦϞʔτϦϙδτϦʹ ࣍ͷ։ൃ HJUQVMMcมߋΛऔΓࠐΉ 13
࣍ ͡Ίʹ 1 ࣄͰͷ(JU)VC 1 (JU)VCϑϩʔ͔ΒݟΔʮΒ͔͠ʯ ɾ։ൃͷ४උ 1d ɾ։ൃ։࢝ʂ 1d
ɾ࣍ͷ։ൃ 1d (JU)VCΛศརʹ͢Δπʔϧɾখٕ 1d 14
։ൃͷ४උ 15
ϒϥϯν໊ΛදࣔͰ͖ΔΑ͏ʹ͢Δ 16 $ sudo nano ~/.bashrc 下記のShellをコピペ(Ubuntu, bashの場合) if [
-f /etc/bash_completion ]; then . /etc/bash_completion fi if [ -f /etc/bash_completion.d/git-prompt ]; then export PS1='¥[¥033[01;32m¥]¥u@¥h¥[¥033[01;33m¥] ¥w$(__git_ps1) ¥n¥[¥033[01;34m¥]¥$¥[¥033[00m¥] ' else export PS1='¥[¥033[01;32m¥]¥u@¥h¥[¥033[01;33m¥] ¥w ¥n¥[¥033[01;34m¥]¥$¥[¥033[00m¥] ' fi $ source ~/.bashrc
HJUDPOGJHϢʔβʔใΛೖྗ 17 طଘͷϦϙδτϦΛμϯϩʔυʢίϐʔʣ͢Δ $ git config --global user.name “ࣗͷGitHubϢʔβʔ໊” $
git config --global user.email “GitHubͷϝʔϧΞυϨε” ֬ೝ $ cat ~/.gitconfig [user] name = 自分のGitHubユーザ名 email = GitHubのメールアドレス
ϦϙδτϦΛGPSL͢Δ 18 044ʹϓϧϦΫΛߦ͏߹ɺGPSLͯ͠ϓϧϦΫ (JU)VC5FBNTΛ͏߹ɺDPOUSJCVUPSͱͯ͠ ΞΧϯτΛՃͯ͠Β͍ɺϓϧϦΫ ʮ'PSLʯ Λ ΫϦοΫ
HJUDMPOFʢΪοτ Ϋϩʔϯʣ 19 طଘͷϦϙδτϦΛμϯϩʔυʢίϐʔʣ͢Δ $ git clone [URL]
HJUDMPOFʢΪοτ Ϋϩʔϯʣ 20
HJUCSBODI<ϒϥϯν໊>ʢΪοτ ϒϥϯνʣ ৽͍͠ϒϥϯνΛ࡞͢Δ ϒϥϯνͷ໊લΛؒҧͬͯ͠·ͬͨ߹ $ git branch -m [古いブランチ名] [新しいブランチ名]
ϒϥϯνΛআ͢Δ߹ $ git branch -d [ブランチ名] 21
HJUCSBODI<ϒϥϯν໊>ʢΪοτ ϒϥϯνʣ 22
⚠Β͔͠ҙ ϒϥϯνͷ࡞NBTUFSͰߦ͏ ࡞ۀϒϥϯνͰϒϥϯνΛΔʢ৽ ͍͠ϒϥϯνΛ࡞Δʣͱ มߋ༰ΛऔΓࠐΉͨΊɺ ίϯϑϦΫτʹ͕᷷ͬͯ͠·͏ɻ ˣ มߋ͍ͯ͠ͳ͍NBTUFSϒϥϯνͰ ϒϥϯνΛΔ 23
新しいブランチ ৽͍͠ϒϥϯν͕ લͷϒϥϯνͷมߋ ϑΝΠϧΛ࿈ΕࠐΉਤ
HJUTXJUDI<ϒϥϯν໊>ʢΪοτ εΠονʣ 24 ϒϥϯνΛҠಈ͢Δ $ git switch[ブランチ名]
HJUTXJUDI<ϒϥϯν໊>ʢΪοτ εΠονʣ 25
࣍ ͡Ίʹ 1 ࣄͰͷ(JU)VC 1 (JU)VCϑϩʔ͔ΒݟΔʮΒ͔͠ʯ ɾ։ൃͷ४උ 1d ɾ։ൃ։࢝ʂ 1d
ɾ࣍ͷ։ൃ 1d (JU)VCΛศརʹ͢Δπʔϧɾখٕ 1d 26
։ൃ։࢝ 27
(JU)VCͰΑ͘͏ίϚϯυΛ࣌ܥྻॱʹհ ։ൃͷ४උ HJUDPOpHcϢʔβʔใΛೖྗ HJUDMPOF<ϦϙδτϦ63->cϦϞʔτϦϙδτϦΛμϯϩʔυ HJUCSBODI<ϒϥϯν໊>cϒϥϯνͷ࡞ HJUTXJUDI <ϒϥϯν໊>cϒϥϯνͷҠಈ HJUSFNPUFBEEPSJHJO<ϦϙδτϦ63->cͲͷ63-ʹQVTI͢Δ͔ ։ൃ։࢝ʂ HJUTUBUVTcมߋ༰ͷঢ়ଶΛ֬ೝ͢Δ
HJUBEE<มߋϑΝΠϧ໊>cมߋΛొ͢Δ HJUDPNNJUNlϝοηʔδz cίϛοτΛ࡞ HJUQVTIPSJHJO<ϒϥϯν໊>cϦϞʔτϦϙδτϦʹ ࣍ͷ։ൃ HJUQVMMcมߋΛऔΓࠐΉ 28
HJUTUBUVTʢΪοτ εςʔλεʣ 29 ࠓͷϑΝΠϧͷঢ়ଶΛ֬ೝ͢Δ $ git status ͘؆ܿʹදࣔ͢Δ $ git
status –s ͘දࣔ͠ɺͲͷϒϥϯνͷใͳͷ͔දࣔ͢Δ $ git status -b
HJUTUBUVTʢΪοτ εςʔλεʣ 30
HJUBEEʢΪοτ Ξυʣ 31 มߋϑΝΠϧΛΠϯσοΫεʹՃ͠ɺ ίϛοτରʹ͢Δ $ git add [ファイル名] ϫʔΫπϦʔɿ࡞ۀॴ
ΠϯσοΫεɿ ίϛοτΛอଘ͢Δॴɻ εςʔδϯάΤϦΞͱݴ͏ɻ มߋϑΝΠϧΛΠϯσοΫεʹՃ͢Δ͜ͱΛ εςʔδϯάͱݴ͏ ϩʔΧϧ ϦϙδτϦ ΠϯσοΫε ϫʔΫπϦʔ HJUBEE HJUDPNNJU
HJUBEEʢΪοτ Ξυʣ 32
⚠Β͔͠ҙ HJUBEEΘͳ͍ 33 $ git add . શͯͷϑΝΠϧΛҰؾʹεςʔδϯάͰ ͖Δ͕༨ܭͳϑΝΠϧΛؚΉ߹͕͋Δͨ Ίɺجຊ͠ͳ͍ɻ
͠ΔͳΒ.gitignoreͰ༨ܭͳϑΝΠ ϧ͕ೖΒͳ͍Α͏ʹ͢ΔͳͲྀ͕ඞཁɻ ༨ܭͳϑΝΠϧ͕ ೖΓࠐΈ࡞ۀΛ अຐ͢Δਤ :PV
༨ܭͳϑΝΠϧΛHJUBEE Β͔͠ɿ˒ˑˑ 34 มߋ༰͕ফ͑ΔͷͰɺͲ͔͜ʹιʔεί ʔυΛίϐϖ͠อଘ͓͖ͯ͠·͢ɻ $ git reset HEAD git
initޙͷ߹ɺ $ git rm --cached -r [ファイル名]
HJUDPNNJUʢΪοτ ίϛοτʣ 35 ΠϯσοΫεͷϑΝΠϧΛ ϩʔΧϧϦϙδτϦʹอ͢Δ $ git commit -m “メッセージ”
લͷίϛοτϝοηʔδΛमਖ਼͍ͨ͠߹ $ git commit --amend -m “新しいメッセージ” աڈͷίϛοτϝοηʔδΛݟ͍ͨ $ git log ͜ͷͱ͖ɺίϛοτϝοηʔδ ଞਓ͕͋ͱ͔Βݟ͔ͯΔΑ͏ʹॻ͘ ϩʔΧϧ ϦϙδτϦ ΠϯσοΫε ϫʔΫπϦʔ
HJUDPNNJUʢΪοτ ίϛοτʣ 36
Θ͔Γ͍͢DPNNJUϝοηʔδΛ 37 DPNNJUϝοηʔδɺ ଞਓ͕͋ͱ͔Βݟͯ֓ཁ͕͔Δ Α͏ʹॻ͘ ςετ༷ॻͷهࡌ༰ͱίʔυ͕ҧ͏ɺ ؔ࿈όάͷमਖ਼࣌ͳͲʹ֬ೝ͢Δ߹͕ ଟ͍ɻͦͷͨΊɺόάमਖ਼࣌ैདྷͷ༷ͱ มΘΔ߹ɺ8)Λҙࣝ͠ಛʹ৻ॏʹॻ͘ όάΛमਖ਼
ˣ ސ٬*%͕ͷ࣌ɺूܭ͞Εͳ͍Α͏ʹमਖ਼ ҙຯ ͔ΒΜʂ όάΛमਖ਼ ֬ೝͬͱ
Θ͔Γ͍͢DPNNJUϝοηʔδΛ 38 Մಡੑ ཧੑ ݪࢠੑ దʹখ͍͞ DPNNJU มߋ༰͕ ҙຯతʹ ·ͱ·ͬͯ
͍Δ͔ DPNNJU NFTTBHFͷ ಡΈ͢͞ ݪࢠੑ DPNNJUɺݴͰݴ͍දͤΔมߋ༰Ͱ ͋Δ͜ͱ Մಡੑ ଞਓ͕ޙ͔Βݟͯ֓ཁ͕Θ͔Δ ཧੑ ෳͷมߋ͕͋Δ߹ɺ ಉ͡ࣄΛ͍ͯ͠Δʢҙຯతʹ·ͱ·ͬͨʣ ͷΛDPNNJU͢Δ
༨ܭͳϑΝΠϧΛDPNNJUͨ͠··QVTI ˒˒ˑ 39 มߋՕॴ͕গͳ͍߹ʢίϛοτΛશͯऔΓফͤΔʣ $ git reset -–hard HEAD^ $
git push origin [作業ブランチ名] ͍ͨ͠ίϛοτཤྺ͕ଟ͍߹ มߋΛҙਤ͠ͳ͍ϑΝΠϧͷ༰ΛNBTUFSΛಉ͡ʹ͢Δ $ git switch master $ git pull origin master $ git checkout [作業ブランチ名] $ git checkout master [意図しないファイル名]
༨ܭͳϑΝΠϧΛDPNNJUͨ͠··QVTI ˒˒ˑ 40 ͦΕͰ͏·͍͔͘ͳ͍߹ ৽͘͠࡞ۀϒϥϯνΛ࡞͠ɺݩͷ࡞ۀϒϥϯν͔ΒඞཁͳϑΝΠ ϧ͚ͩΛ࣋ͬͯ͘Δ $ git checkout master
$ git pull origin master $ git branch [新しいブランチ名] $ git checkout [新しいブランチ名] $ git checkout [元のブランチ名] [特定ファイル名] ৽͍͠ϒϥϯνͰ։ൃ͢Δ͜ͱʹͳΔ
HJUQVTIʢΪοτ ϓογϡʣ 41 ίϛοτͷ༰ΛϦϞʔτϦϙδτϦʹө͢Δ $ git push origin [ブランチ名] ؒҧ͑ͯQVTIͯ͠͠·ͬͨ߹ɺ
git revert ͰΓ͠ɻ ྨࣅίϚϯυʹgit reset͋Δ͕͋·Γ͓͢͢Ί͠ͳ͍
HJUQVTIʢΪοτ ϓογϡʣ 42
1VMM3FRVFTUͷ࡞Γํ 43 ϓϧϦΫɺϚʔδͯ͠ྑ͍ஈ֊Ͱ࡞Δɻ ։ൃ్தͰϚʔδ͞Εͳ͍Α͏ʹ͢ΔͨΊɻ λΠτϧɺձࣾʹΑΔ͕ɺϓϩδΣΫτ໊ɾνέοτ൪߸Λઌ ಄ʹͨ͠ޙɺৄ͍͠༰Λॻ͘ ྫɿ UPOPZBNBձܭը໘ͷϝχϡʔΞΠςϜ͕ԼʹͣΕΔ Uސ٬*%͕ͷ߹ɺूܭ͞ΕΔ
ٸᬎɺଞͷϒϥϯνͰ࡞ۀ͢Δ߹ 44 ·ͩ։ൃ్தͰίϛοτ͍ͯ͠ͳ͍ϑΝΠ ϧ͕͋Δ͕ɺϒϥϯνΛΓସ͍͑ͨ߹ɺ ʮHJUTUBTIʯΛ͓קΊ͠·͢ɻ HJUDPNNJU ͰΓସ͑ΒΕΔ͕ɺத్ͳ DPNNJU͕ൃੜ͢ΔͨΊɻ $ git
stash $ git stash apply ͬͪ͜ͷλεΫΛઌ ʹ͓͍ͬͯͯ
࣍ ͡Ίʹ 1 ࣄͰͷ(JU)VC 1 (JU)VCϑϩʔ͔ΒݟΔʮΒ͔͠ʯ ɾ։ൃͷ४උ 1d ɾ։ൃ։࢝ʂ 1d
ɾ࣍ͷ։ൃ 1d (JU)VCΛศརʹ͢Δπʔϧɾখٕ 1d 45
࣍ͷ։ൃʂ 46
HJUQVMM 47 NBTUFSϒϥϯν $ git switch master ϦϞʔτϦϙδτϦͱಉظ $ git
pull origin master ϒϥϯνΛ࡞͠ɺ࠶ͼ։ൃ QVMMͱ GFUDIࣅͯΔ
HJUQVMM ͱ HJUGFUDIͷҧ͍ 48 औಘͨ͠ϒϥϯνใΛϩʔΧϧϒϥϯνʹϚʔδ͢Δ͔Ͳ͏͔ มߋதͷϑΝΠϧ͕͋Δ߹ɺgit fetch ࡞ۀ͕ऴΘ͍ͬͯΔ߹ɺgit pull
࠷ޙʹɿ͍··ͰͷίϚϯυୡ ։ൃͷ४උ HJUDPOpHcϢʔβʔใΛೖྗ HJUDMPOF<ϦϙδτϦ63->cϦϞʔτϦϙδτϦΛμϯϩʔυ HJUCSBODI<ϒϥϯν໊>cϒϥϯνͷ࡞ HJUTXJUDI <ϒϥϯν໊>cϒϥϯνͷҠಈ HJUSFNPUFBEEPSJHJO<ϦϙδτϦ63->cͲͷ63-ʹQVTI͢Δ͔ ։ൃ։࢝ʂ HJUTUBUVTcมߋ༰ͷঢ়ଶΛ֬ೝ͢Δ
HJUBEE<มߋϑΝΠϧ໊>cมߋΛొ͢Δ HJUDPNNJUNlϝοηʔδz cίϛοτΛ࡞ HJUQVTIPSJHJO<ϒϥϯν໊>cϦϞʔτϦϙδτϦʹ ࣍ͷ։ൃ HJUQVMMcมߋΛऔΓࠐΉ 49
࣍ ͡Ίʹ 1 ࣄͰͷ(JU)VC 1 (JU)VCϑϩʔ͔ΒݟΔʮΒ͔͠ʯ ɾ։ൃͷ४උ 1d ɾ։ൃ։࢝ʂ 1d
ɾ࣍ͷ։ൃ 1d (JU)VCΛศརʹ͢Δπʔϧɾখٕ 1d 50
(JU)VCΛศརʹ͢Δ πʔϧɾখٕ 51
ΤΠϦΞε 52 $ sudo nano ~/.gitconfig [alias] 省略名=gitコマンド $ sudo
nano ~/.bashrc $ alias [エイリアス名]=‘コマンド’ $ source ~/.bashrc
(JU)VC$-* ίϚϯυϥΠϯ্Ͱ(JU)VCΛૢ࡞Ͱ͖Δ$-*πʔϧ ϦϙδτϦΛ࡞ $ gh repo create リポジトリ名 ΠγϡʔΛ࡞ $
gh issue create ϓϧϦΫΛ࡞ $ gh pr create 53
(JU(SBQI 74$PEFͷ֦ுػೳɻ (JU͕τϥϒͬͨ࣌ʹࠓͷঢ় گΛ͔Γ͘͢͢Δɻ ਓʹઆ໌͢Δͱ͖ʹ ศརɻ 54
(JU-FOT 74$PEFͷ֦ுػೳɻ มߋ͞ΕͨߦͷมߋΛ؆୯ ʹݟΒΕΔ ରϑΝΠϧΛӈΫϦοΫ ˠʮ0QFO$IBOHFT 1SFWJPVT3FWJTJPOʯΛબɻ 55
࠷ޙʹ࣭͋Γ·ͤΜ͔ʁ 56