Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第1回 Git講座
Search
Pudding
March 18, 2018
Programming
0
780
第1回 Git講座
あくあたん工房での第一回 Git講座の講義資料です。add・commitしてからリモートへpush、プルリクエストがマージされた後、ローカルでのpullする作業までを解説しています。
Pudding
March 18, 2018
Tweet
Share
More Decks by Pudding
See All by Pudding
GNU Make勉強会 / GNU Make Exercise
pddg
2
11k
雑に覚えるVim / Vim Tutorial
pddg
0
98
中古PCのススメ/The fundamentals of used PC
pddg
1
89
もっと気楽にいきましょうって話 / Make more relax
pddg
4
2.3k
アイデアの卵と動かざる手 / Do you have something to do to realize your idea?
pddg
0
190
Docker Seminar for SEL@KIT
pddg
0
120
進学先を間違ったなと思ったら / I made a mistake in my path
pddg
0
140
なぜ平文パスワードはNGなのか / Why are plain passwords evil?
pddg
1
190
Mizql Map @ KITハッカソン2018 by ツナ缶 / Mizql Map
pddg
0
130
Other Decks in Programming
See All in Programming
Microservices rules: What good looks like
cer
PRO
0
1.6k
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
190
俺流レスポンシブコーディング 2025
tak_dcxi
14
9.4k
マスタデータ問題、マイクロサービスでどう解くか
kts
0
110
FluorTracer / RayTracingCamp11
kugimasa
0
250
ゲームの物理 剛体編
fadis
0
370
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
3
410
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
400
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
390
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
140
Cap'n Webについて
yusukebe
0
150
認証・認可の基本を学ぼう前編
kouyuume
0
260
Featured
See All Featured
Between Models and Reality
mayunak
0
150
The World Runs on Bad Software
bkeepers
PRO
72
12k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
65
35k
The untapped power of vector embeddings
frankvandijk
1
1.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
How to make the Groovebox
asonas
2
1.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
91k
Believing is Seeing
oripsolob
0
15
Visualization
eitanlees
150
16k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
0
940
Transcript
(JUߨ࠲ ͋͋ͨ͘Μ
࣍ ։ൃʹ͓͚Δόʔδϣϯཧͷେ͞ (JUͷ֓ཁ (JUϗεςΟϯάαʔϏεʹ͍ͭͯ ࠓΔ͜ͱͷઆ໌
(JUͷ֤ૢ࡞Λަ࣮͑ͯश Ὂ DMPOF DIFDLPVU BEE DPNNJU QVTI QVMM GFUDIʜ HJUΫϥΠΞϯτͷհ
։ൃʹ͓͚Δ όʔδϣϯཧͷେ͞
όʔδϣϯཧ҉ࠇ࣌ʢʣ ˔ ϑΝΠϧ໊Ͱཧ Ὂ ཁૉΛ༩ͯ͠ผ໊Ͱอଘ ˗ ˗ ൛ʢվగ൛ɺ࠷৽൛ʜʣ Ὂ
ͲΕ͕࠷৽͔͔Βͳ͘ͳΔ ˗ ࠷৽൛ ˗ ࠷৽൛ʢʣͳͲʜ Ὂ ͭΒ͍
όʔδϣϯཧ҉ࠇ࣌ʢʣ ˔ ιʔείʔυͷมߋΛ ίϝϯτͰཧ Ὂ มߋऀ Ὂ มߋͳͲ ˔ มߋ͕͔Βͳ͍ɾͤͳ͍
Ὂ ݩͷίʔυͲ͏ͩͬͨͷ͔ Ὂ ॻ͖͑ΒΕͨίʔυ ͬͯ͜ͳ͍ import os # 2018/1/18 ύεΛදࣔ print(os.path) if "/usr/bin" in os.path: # 2018/1/20 มߋ print("Loaded") # 2018/1/22 ޙͰ࣮ # hoge() # 2018/1/15 ফͨ͠ # pudding: ͜͜Α͘ͳ͍ end()
όʔδϣϯཧ҉ࠇ࣌ʢʣ ˔ ෳਓͰ։ൃ͢ΔࡍɺϑΝΠϧΛڞ༗ͯ͠ฤू Ὂ ଞਓͷมߋͱίϯϑϦΫτ Ὂ ࣗͷมߋ͕ଞਓͷ্ॻ͖Ͱফ͑Δ Ὂ ݁ہಉ࣌ʹҰਓͣͭͰ࡞ۀ ˔
ٸͳ։ൃλεΫͷՃ Ὂ ػೳ"·్࣮ͩத Ὂ ػೳ#͕ٸʹඞཁʜ Ͳ͏͢Δʁ
खಈͰมߋΛཧ͢Δͷ ਓྨʹ͗͢͠Δ
None
֓ཁ ˔ ࢄܕόʔδϣϯཧγεςϜ ˔ -JOVT5PSWBMETΒʹΑͬͯ࡞ΒΕͨʢʣ Ὂ -JOVYΧʔωϧͷΑ͏ͳڊେͳίʔυΛޮΑ͘ ཧɾ։ൃ͢ΔͨΊ Ὂ ෳਓ։ൃΛָʹ͢ΔͨΊ
˔ (JU࠷ॳͷόʔδϣϯཧγεςϜͰͳ͍ Ὂ -JOVYΧʔωϧॳ#JU,FFQFSΛ͍ͬͯͨ Ὂ ଞʹ༗໊ͳͷ ˠ$74 4VCWFSTJPO .FSDVSJBM #B[BBSͳͲ
όʔδϣϯཧͬͯʁ ˔ શͯͷมߋཤྺ͕HJUʹΑͬͯอଘ ͞Ε͍ͯΔ Ὂ ୭͕ɾ͍ͭɾͲ͏มߋͨ͠ͷ͔ ˔ աڈͷҙͷมߋΕΔ Ὂ มߋͷ࡞ɿ
˔ ͳΜͰཧͰ͖Δ Ὂ ςΩετʹݶΒͳ͍ ˔ ϦϙδτϦ Ὂ ཧԼʹ͋ΔϓϩδΣΫτͷ͜ͱ commit
ࢄܕͬͯͲ͏͍͏͜ͱʁ
(JUϗεςΟϯάαʔϏε ˔ (JUͷϦϞʔτϦϙδτϦΛ ఏڙ͢ΔαʔϏε Ὂ! (JUIVC Ὂ" (JU-BC Ὂ# #JU#VDLFU
˔ ʮ(JUΛ͏ʯ ˠʮόʔδϣϯཧ͢Δʯ ˔ ʮ(JUIVCΛ͏ʯ ˠʮϦϞʔτϦϙδτϦͱͯ͠(JUIVCΛ͏ʯ
ʢ༨ஊʣब׆ʹཱͭ ˔ (JUIVCΞΧϯτͷఏࣔΛٻΊΔاۀ͋Δ Ὂ (JUIVCʹ͜Μͳઃఆ͋Δˠ ˔ ʮ໘લʹదͳ044 ͍Εͱ͚͍͍Μ͡ΌͶXʯ Ὂ ҰॠͰόϨΔ
Ὂ (JUIVCͷʮࣳੜʯͰ׆ಈͷཤྺ͕͙͢Θ͔Δˣ
ࠓΔ͜ͱ
ԋश ˔ νʔϜ։ൃͷྲྀΕΛମݧ DMPOF BEE DPNNJU CSBODI
QVTI QVMMSFRVFTU ϨϏϡʔɾNFSHF GFUDIɾQVMM ֬ೝ ˔ ͋͋ͨ͘Μެࣜ8FC ϖʔδͷϓϩϑΟʔϧΛ ߋ৽͢Δ
(JUͷ֬ೝ ˔ Λ։͘ Ὂ .BDλʔϛφϧͳͲ Ὂ 8JOEPXT(JU#BTI ˔ ৭ʑ֬ೝ͓ͯ͘͠ Ὂ
(JUͷόʔδϣϯ Ὂ ΧϨϯτσΟϨΫτϦ $ git ——version git version 2.15.1.windows.2 $ pwd /path/to/home # ԋश༻σΟϨΫτϦ࡞ $ mkdir git-seminar $ cd git-seminar
(JUͷॳظઃఆ # ઃఆ $ git config ——global user.name “ͳ·͑” $
git config —-global user.email “Ί͋Ͳ” ˔ Ϣʔβ໊ͱ͔Λઃఆ Ὂ DPNNJUͷཤྺʹදࣔ͞ΕΔ໊લͱϝʔϧΞυϨε Ὂ HJUIVCʹొͨ͠ͷͰྑ͍ͱࢥ͏ ˔ QVCMJDͳϦϙδτϦͷ߹ɺશੈքʹެ։͞Εͯ ͍ΔͷͰɺݸਓใҙ ˔ ΦϓγϣϯͰϦϙδτϦ͝ͱʹઃఆͰ͖Δ ——local
։ൃͷશମͷྲྀΕ ϦϙδτϦΛDMPOFʢ·ͨ࡞ʣ ϒϥϯνΛΔ มߋΛBEE DPNNJU ϦϞʔτϦϙδτϦQVTI
QVMMSFRVFTUΛൃߦ NFSHF GFUDIɾQVMMͯ͠ϩʔΧϧʹมߋΛө ֬ೝ
˔ ϦϞʔτϦϙδτϦͷίϐʔΛϩʔΧϧʹ࡞͢Δ ˔ HJUϗεςΟϯάαʔϏεͰެ։͞Ε͍ͯΔجຊ ͲΕͰࣗ༝ʹϩʔΧϧDMPOFͰ͖Δ Ὂ ϩʔΧϧϦϙδτϦͪΌΜͱཧ͠Α͏Ͷʂ clone $ pwd
/path/to/git-seminar $ git clone https://github.com/StudioAquatan/web $ ls web $ cd web
։ൃͷશମͷྲྀΕ ϦϙδτϦΛDMPOFʢ·ͨ࡞ʣ ϒϥϯνΛΔ มߋΛBEE DPNNJU ϦϞʔτϦϙδτϦQVTI
QVMMSFRVFTUΛൃߦ NFSHF GFUDIɾQVMMͯ͠ϩʔΧϧʹมߋΛө ֬ೝ
ͦͷલʹ
·ͣόʔδϣϯཧͷ ཧղΛਂΊΑ͏
˔ (JUͰมߋΛDPNNJUͱ͍͏୯ҐͰอଘ͢Δ Ὂ ϑΝΠϧͦͷͷΛอଘ͢ΔΘ͚Ͱͳ͍ Ὂ εφοϓγϣοτΛͱΔˠ༰ྔͷઅʹͳΔ ˔ ʮݱࡏͲͷDPNNJUΛࢦ͍ͯ͠Δ͔ʯͰϑΝΠϧͷ ঢ়ଶ͕ཧ͞Ε͍ͯΔ Ὂ
ݱࡏࢦ͍ͯ͠Δ࠷৽ͷDPNNJUΛͱݺͿ ˔ DPNNJUʹܻͷҰҙͳϋογϡ͕༩͑ΒΕΔ ˔ DPNNJU࿈ଓϦετͷΑ͏ʹͳ͍ͬͯΔ Ὂ DPNNJU͕ࣗલͷDPNNJUͷϙΠϯλʢܻ ͷҰҙͳϋογϡʣΛ͍࣋ͬͯΔ commit HEAD
commit શͯͷมߋ͕ DPNNJU͠ऴΘͬͨঢ়ଶ
commit ৽͘͠ ͱ͍͏ϑΝΠϧΛ ࡞ͨ͠ঢ়ଶ user.html $VTFSIUNM
˔ ৽͘͠ϑΝΠϧΛεςʔδʹՃ͢ΔίϚϯυ ˔ εςʔδͱʜʁ Ὂ ϦϙδτϦʹө͢ΔલͷϑΝΠϧมߋҰཡ Ὂ ͜͜ʹՃ͞Ε͍ͯͳ͍DPNNJU͞Εͳ͍ add $
git add user.html $ git status On branch master Your branch is up-to-date with ‘origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: user.html
εςʔδʹ ͱ͍͏ϑΝΠϧΛ Ճͨ͠ঢ়ଶ user.html add $VTFSIUNM
˔ εςʔδʹ্͕͍ͬͯΔมߋΛϦϙδτϦө Ὂ ৽͘͠࡞ͨ͠ͷ͓ͯ͘͜͠ͱ Ὂ طʹϦϙδτϦʹؚ·Ε͍ͯΔϑΝΠϧมߋΛՃ ͑ͨͱ͖ˠ ˔ ίϛοτϝοηʔδΘ͔Γ͘͢ Ὂ
ϑΝΠϧΛՃͨ͠ˠzBEEIPHFz Ὂ ϑΝΠϧΛߋ৽ͨ͠ˠzVQEBUFGVHBzͳͲ $ git commit -m “add test_user.html” [master 3ad5b42] add test_user.html 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test_user.html commit add git commit -a -m “ίϛοτϝοηʔδ”
git commit -m “add user.html” $VTFSIUNM εςʔδͷมߋΛө
શͯͷมߋ͕ DPNNJU͠ऴΘͬͨঢ়ଶ git commit -m “add user.html”
εςʔδ͔ΒDPNNJU·Ͱ ˔ ࡞ۀπϦʔ͔ΒϑΝΠϧ ΛBEE͢ΔͱHJUͷཧର ʹͳΔ ˔ BEEࡁΈͷϑΝΠϧʹม ߋΛՃ͑ΔͱɺࣗಈͰ εςʔδʹ্͕Δ add
commit
։ൃͷશମͷྲྀΕ ϦϙδτϦΛDMPOFʢ·ͨ࡞ʣ ϒϥϯνΛΔ มߋΛBEE DPNNJU ϦϞʔτϦϙδτϦQVTI
QVMMSFRVFTUΛൃߦ NFSHF GFUDIɾQVMMͯ͠ϩʔΧϧʹมߋΛө ֬ೝ
branch ˔ Ұ࿈ͷDPNNJUʹର͠ذΛ࡞Δ͜ͱ͕ग़དྷΔ Ὂ ذΛ࡞͠ϒϥϯνΛ࡞Δ͜ͱ ˠʮϒϥϯνΛΔʯͱ͍͏ ˔ ϒϥϯνͷਖ਼ମʮ͋Δϒϥϯν໊ͷλά͕͍ͨ Ұ࿈ͷDPNNJUͷ͏ͪ࠷৽ͷͷͷϙΠϯλʯ ˔
࠷جຊͷϒϥϯνˠNBTUFS ˔ ϒϥϯνෳΔ͜ͱ͕Ͱ͖Δ Ὂ ྫɿ։ൃஈ֊͝ͱʢEFWFMPQ SFMFBTFʜʣ Ὂ ྫɿػೳ͝ͱʢGFBUVSFIPHF GFBUVSFGVHBʜʣ ˔ جຊతʹԿ͔͢ΔલʹϒϥϯνΛΔ
˔ NBTUFSͷΈ͕͋Δঢ়ଶ ˔ )&"%ͷࢦ͢ҐஔͱNBTUFSͷࢦ͢Ґஔ͕Ұॹ branch # ϒϥϯνҰཡΛදࣔ $ git branch
* master
branch ˔ ྫͱͯࣗ͠ͷϖʔδΛ࡞͢ΔͨΊʹϒϥϯνΛ ࡞ͯ͠ΈΔ Ὂ ϒϥϯν໊zQBHF\\OBNF^^z $ git branch page/{{name}}
$ git branch * master page/{{name}}
checkout $ git checkout page/{{name}} Switched to branch ‘page/{{name}}' $
git branch master * page/{{name}} ˔ ϒϥϯνͷҠಈʹओʹΘΕΔ Ὂ ಛఆͷίϛοτͷϑΝΠϧΛ෮ݩ͢Δػೳ͋Δ ˔ ࡞ࡁΈͷϒϥϯνҠಈ͢Δଞɺϒϥϯν࡞ͱ ಉ࣌ʹDIFDLPVU͢Δ͜ͱͰ͖Δ git checkout -b page/{{name}}
։ൃͷશମͷྲྀΕ ϦϙδτϦΛDMPOFʢ·ͨ࡞ʣ ϒϥϯνΛΔ มߋΛBEE DPNNJU ϦϞʔτϦϙδτϦQVTI
QVMMSFRVFTUΛൃߦ NFSHF GFUDIɾQVMMͯ͠ϩʔΧϧʹมߋΛө ֬ೝ
branch $ git add member/{{name}}.html $ git commit -m “add
{{name}} page” ˔ QBHF\\OBNF^^ϒϥϯνDPNNJU͞Εͨ ˔ )&"%͕Ҡಈ͠࠷৽ͷDPNNJUΛࢦ͢ Ὂ NBTUFSมԽ͠ͳ͍
։ൃͷશମͷྲྀΕ ϦϙδτϦΛDMPOFʢ·ͨ࡞ʣ ϒϥϯνΛΔ มߋΛBEE DPNNJU ϦϞʔτϦϙδτϦQVTI
QVMMSFRVFTUΛൃߦ NFSHF GFUDIɾQVMMͯ͠ϩʔΧϧʹมߋΛө ֬ೝ
˔ ϩʔΧϧϦϙδτϦͷมߋΛϦϞʔτϦϙδτϦ ө͢Δ ˔ Ὂ PSJHJOϦϞʔτϦϙδτϦͷผ໊ʢσϑΥϧτʣ Ὂ QVTI͢Δઌͷϒϥϯν໊ʹҙ ˔
͜͜Ͱෆཁ͕ͩɺ৽نͰQVTIΛߦ͏߹ɺϦϞʔ τϦϙδτϦͷΞυϨεΛՃ͢Δඞཁ͕͋Δ push git push origin {{ϒϥϯν໊}} $ git push origin page/{{name}}
։ൃͷશମͷྲྀΕ ϦϙδτϦΛDMPOFʢ·ͨ࡞ʣ ϒϥϯνΛΔ มߋΛBEE DPNNJU ϦϞʔτϦϙδτϦQVTI
QVMMSFRVFTUΛൃߦ NFSHF GFUDIɾQVMMͯ͠ϩʔΧϧʹมߋΛө ֬ೝ
(JUIVCߨ࠲ࢀর
։ൃͷશମͷྲྀΕ ϦϙδτϦΛDMPOFʢ·ͨ࡞ʣ ϒϥϯνΛΔ มߋΛBEE DPNNJU ϦϞʔτϦϙδτϦQVTI
QVMMSFRVFTUΛൃߦ NFSHF GFUDIɾQVMMͯ͠ϩʔΧϧʹมߋΛө ֬ೝ
˔ ͋ΔϒϥϯνͰͷDPNNJUΛผͷϒϥϯνऔΓࠐΉ ˔ ҎԼQBHF\\OBNF^^ΛNBTUFSϚʔδ͍ͯ͠Δ Ὂ (JUIVC্ͰQVMMSFRVFTUΛϚʔδ͢Δͱ ϦϞʔτϦϙδτϦͰԼه͕࣮ߦ merge
։ൃͷશମͷྲྀΕ ϦϙδτϦΛDMPOFʢ·ͨ࡞ʣ ϒϥϯνΛΔ มߋΛBEE DPNNJU ϦϞʔτϦϙδτϦQVTI
QVMMSFRVFTUΛൃߦ NFSHF GFUDIɾQVMMͯ͠ϩʔΧϧʹมߋΛө ֬ೝ
checkout $ git checkout master Switched to branch ‘master' $
git branch * master page/{{name}} ˔ ࡞ۀ͕ऴΘͬͨΒݩͷϒϥϯνΔ Ὂ ࣍ͷϒϥϯνΛੜϒϥϯν͔ΒΒͳ͍Α͏ʹ ˔ DPNNJU͍ͯ͠ͳ͍มߋ͕͋ΔͱΕͳ͍ Ὂ جຊతʹશͯDPNNJU͔ͯ͠ΒΖ͏ Ὂ Ͳ͏ͯ͠ඞཁͳ߹TUBTI͕͑Δ
˔ ϦϞʔτϦϙδτϦͷมߋΛϩʔΧϧϦϙδτϦ ө͢ΔίϚϯυ Ὂ 8PSLJOH%JSFDUPSZͷมߋߦΘͳ͍ ˔ ɹ Ὂ औಘͨ͠มߋΛ࣮ࡍʹө͢Δ Ὂ
PSJHJOͷ\\ϒϥϯν໊^^ΛϩʔΧϧͷ\\ϒϥϯν໊^^ ө͢Δͱ͍͏ҙຯ fetch git merge origin/{{ϒϥϯν໊}} $ git fetch # ͜͜ͰmasterΛϚʔδ͢Δ $ git merge origin/master
˔ ݱࡏ͍ΔϒϥϯνϦϞʔτͷมߋΛϚʔδ͢Δ Ὂ ͦΕҎ্ͷ͍ํΛ͍͚ͯ͠ͳ͍ ˔ લड़ͷGFUDIͱNFSHFPSJHJO\\ϒϥϯν໊^^Λ ҰׅͰ࣮ߦ͢Δ ˔ άάΔͱ༻͠ͳ͍͜ͱΛਪ͢Δهࣄ͕ࢁ ώοτ͢Δ
Ὂ ͪΌΜͱཧղͯ͑͠ศར pull # masterʹ͍ΔͳΒorigin/masterͷมߋ͕औΓࠐ·ΕΔ $ git pull
։ൃͷશମͷྲྀΕ ϦϙδτϦΛDMPOFʢ·ͨ࡞ʣ ϒϥϯνΛΔ มߋΛBEE DPNNJU ϦϞʔτϦϙδτϦQVTI
QVMMSFRVFTUΛൃߦ NFSHF GFUDIɾQVMMͯ͠ϩʔΧϧʹมߋΛө ֬ೝ
֬ೝ ˔ ϩʔΧϧө͞Ε͔ͨ֬ೝ͢Δ NBTUFSϒϥϯνΛνΣοΫΞτ NFNCFS\\OBNF^^IUNMΛϒϥβͰ։͘ ˔
Ҏ্͕جຊతͳෳਓ։ൃͷྲྀΕʹͳΔ śŧœʙʢů ьʆ ůʙ̇ git fetch && git merge origin/master
(JUIVCͷ͍ํؚΊͨྲྀΕ ϦϙδτϦΛDMPOFʢ·ͨ࡞ʣ JTTVFΛݐͯΔPSׂΓͯΒΕͨJTTVFΛ֬ೝ ϒϥϯνΛΔ มߋΛBEE DPNNJU
ϦϞʔτϦϙδτϦQVTI QVMMSFRVFTUΛൃߦɺϨϏϡʔɾमਖ਼ޙNFSHF ʢJTTVFΛด͡Δʣ ݩͷϒϥϯνΛDIFDLPVU GFUDIɾQVMMͯ͠ϩʔΧϧʹมߋΛө ֬ೝ
5JQT ˔ 2͍ͭDPNNJU͢Ε͍͍ΜͰ͔͢ʁ "࣌ͱ߹ʹΑΔ͕ɺׂͱࡉ͔͍୯ҐͰDPNNJU͠ ͯશવߏΘͳ͍ɻDPNNJU͕૿͑Δ͜ͱΛڪΕΔ ҙຯແ͍ɻ ˔ 2ϨϏϡʔͯ͠ΒΘͳ͍ͱμϝͰ͔͢ʁ "Ұਓͷ࣌ෆཁɻνʔϜ։ൃͰඞਢ ˔
2ϨϏϡʔ͕ාͯ͘ϓϧϦΫग़ͤ·ͤΜ "ϨϏϡΞʔَ͡Όͳ͍ͷͰ҆৺ͯ͠ ˔ 2ίϯϑϦΫτͨ͠ʂ "࣍ճΓ·͠ΐ͏