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
Day 1 - Git
Search
offz
April 19, 2017
Programming
0
90
Day 1 - Git
Show how to use git for beginner.
offz
April 19, 2017
Tweet
Share
More Decks by offz
See All by offz
TM-P2-IT-security
offfffz
0
24
Docker Compose for Rails Developer
offfffz
1
37
Day 2 - Docker
offfffz
0
45
Day 2 - CI
offfffz
0
57
Day 1 - Testing
offfffz
0
49
Other Decks in Programming
See All in Programming
Cap'n Webについて
yusukebe
0
150
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.3k
Patterns of Patterns
denyspoltorak
0
380
Implementation Patterns
denyspoltorak
0
130
開発に寄りそう自動テストの実現
goyoki
2
1.5k
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
270
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
460
Graviton と Nitro と私
maroon1st
0
140
マスタデータ問題、マイクロサービスでどう解くか
kts
0
140
gunshi
kazupon
1
120
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
850
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
160
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
130
Designing for humans not robots
tammielis
254
26k
Context Engineering - Making Every Token Count
addyosmani
9
560
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Darren the Foodie - Storyboard
khoart
PRO
0
2k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
70
Speed Design
sergeychernyshev
33
1.4k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Scaling GitHub
holman
464
140k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
67
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
150
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
Transcript
Git
Git คือ? Master Dev new awesome feature
Keywords - commit: snapshot งานของเรา ณ. เวลานั้นๆ - branch: pointer
ที่ชี้ไปที่ commit 1 จุด - checkout: เปลี่ยน branch - merge: นำ 2 branch มารวมกัน
Keywords - clone: นำ code จากบน server ลงมา - push:
ส่งงานจากเครื่อง ขึ้นไปที่ server - fetch: download งานล่าสุดจาก server - pull: fetch + merge
Commit สถานะปัจจุบัน ของงานที่กำลังทำอยู่
Commit a.txt ——————————— Hello a.txt ——————————— Hello World B
A
Branch ให้มองเป็น pointer ที่ชี้ไปที่ commit ใดๆ ใน graph
Branch B A C D Master Dev
Branch B A C D Master Dev E
Branch B A C D Master Dev E F
Checkout เปลี่ยน pointer ที่เรากำลังทำงาน ไปที่ commit อื่น
Checkout B A Master a.txt ——————————— Hello a.txt ——————————— Hello
World B A Master
Merge นำ 2 branch มารวมกัน โดยต้องไม่มี จุดที่เปลี่ยนแปลงพร้อมกัน ทั้งสอง branch
Merge B A Master a.txt ——————————— Hello World Dev
Merge B A Dev a.txt ——————————— Hello World Master
C
Merge (conflict) นำ 2 branch มารวมกัน แต่มีจุดที่แก้ไข ณ. ที่เดียวกันทั้งสอง
branch
Merge (conflict) B A Master a.txt ——————————— Hello World
Dev
Merge (conflict) B A Master a.txt (Dev) ——————————— Hello
Thailand Dev C a.txt (Master) ——————————— Hello World
Merge (conflict) B A a.txt (Dev) ——————————— Hello Thailand
C a.txt (Master) ——————————— Hello World E Dev Master a.txt (conflict) ——————————— Hello >>>>>>> World ======= Thailand <<<<<<<
Merge (conflict) B A C Dev Master E a.txt (Dev)
——————————— Hello World a.txt (Master) ——————————— Hello World
Clone สร้าง directory ใหม่ในเครื่องของเรา แล้วทำการ download ทุกอย่างลงมา
Server Clone B A C D Master Dev E เครื่องเรา
B A C D Master Dev E
Push ส่งงานที่เราทำขึ้นไปบน server
Server Push B A C D Master Dev E เครื่องเรา
B A C D Master Dev E F
Server Push B A C D Master Dev E เครื่องเรา
B A C D Master Dev E F F
Fetch download งานใหม่ที่สุดลงมาในเครื่องเรา
Server Fetch B A C D Master Dev E เครื่องเรา
B A C D Master Dev E F
Server Fetch B A C D Master Dev E เครื่องเรา
B A C D Master Dev E F F
Pull fetch งานล่าสุดจาก server และ merge เข้ากับงานล่าสุดในเครื่องเรา
Server Pull B A C D Master Dev E เครื่องเรา
B A C D Master Dev E F
Server Pull B A C D Master Dev E เครื่องเรา
B A C D Master Dev E F F
Git ดียังไง - ไม่มี internet ก็ทำงานได้ - ไม่ถูกรบกวนจากการเปลี่ยนแปลงที่คนอื่นทำ ในขณะที่เราทำงาน
- เมื่อส่งขึ้น server แล้วมั่นใจได้ว่างานจะไม่หาย
ไม่ต้องต่อ internet ตลอด Server B A C D Master E
เครื่องเรา B A C D Master Dev E F G Dev
ไม่ถูกงานคนอื่นรบกวน Server B A C D Master E เครื่องเรา B
A C D Master Dev E ก ข G F Dev
งานไม่หาย Server B A C D Master E เครื่องเรา B
A C D Master Dev E ก ข G F Dev G F Origin/Dev H H
ทำงานกับ Git - pull ของใหม่บ่อยๆ - จะเริ่มงานใหม่ ให้แตก branch -
ทำงาน feature เล็กๆ เสร็จแล้วก็ commit - push ขึ้น server บ่อยๆ ป้องกันงานหาย - งานเสร็จแล้ว ให้ merge กลับไปที่ branch หลัก
Git Server
Gitlab
ข้อดีของ Gitlab - open source และ ฟรี - host เอง
ทุกอย่างอยู่ภายใต้การควบคุม - มี CI/CD ในตัวเลย และเป็น code base CI ซึ่งจัดการได้ง่ายมาก
ข้อเสียของ Gitlab ต้องมีคนดูแล ❤
ทำงานกับ Gitlab 1. สร้าง issue 2. สร้าง branch จาก issue
3. ใช้คำสั่ง git fetch และ git checkout <branch_name> 4. เมื่องานเสร็จให้ push ขึ้นไปที่ server 5. เปิด merge request
ได้เวลามือเปื้อนดิน
walkthrough 00 1. register Gitlab 2. สร้าง ssh key 3.
setup ssh key ใน gitlab
walkthrough 01 1. สร้าง project <name>/git_introduction 2. clone project 3.
สร้างไฟล์ README.md 4. commit 5. push ไป master
walkthrough 02 1. clone project git_first_time 2. สร้าง issue 3.
สร้าง branch จาก issue และสร้าง Merge Request 4. ใช้คำสั่ง git fetch และ git checkout <branch_name>
exercise 1 1. สร้าง folder เป็นชื่อของตัวเองที่จะไม่ซ้ำกับคนอื่น 2. สร้าง file README.md
ใน folder นั้น 3. เขียน markdown ตามต้องการ 4. commit เรื่อยๆ และ push ขึ้น server เป็นครั้งคราว 5. เมื่อทำงานเสร็จแล้ว ให้เอา WIP: ออก
exercise 2 1. สร้าง folder ชื่อ shared 2. สร้าง file
<[1-10]>.md ใน folder นั้น 3. เขียน markdown ตามต้องการ 4. commit เรื่อยๆ และ push ขึ้น server เป็นครั้งคราว 5. พยายามทำให้ merge request เป็นสีเขียว