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
530
情報特許論「新しいディスプレイ」
tonoyama
0
450
特許「量子ニューラルネットワーク」について
tonoyama
0
88
今年の目標と注目技術
tonoyama
2
170
Other Decks in Programming
See All in Programming
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
4
2.3k
バグを直したら useEffect が消えた
colorful12
3
770
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.3k
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
520
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
470
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1.2k
業務時間外もAIに働いてもらう話
colorful12
2
8.7k
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
230
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
370
Press start. Python's next generation.
willingc
PRO
3
250
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
410
Featured
See All Featured
The SEO Collaboration Effect
kristinabergwall1
1
530
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
510
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
430
Faster Mobile Websites
deanohume
310
32k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
950
Docker and Python
trallard
47
4.2k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
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