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
89
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
23
Docker Compose for Rails Developer
offfffz
1
36
Day 2 - Docker
offfffz
0
44
Day 2 - CI
offfffz
0
56
Day 1 - Testing
offfffz
0
47
Other Decks in Programming
See All in Programming
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
19
11k
1から理解するWeb Push
dora1998
7
1.8k
サーバーサイドのビルド時間87倍高速化
plaidtech
PRO
0
720
詳解!defer panic recover のしくみ / Understanding defer, panic, and recover
convto
0
230
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
8
3.4k
Deep Dive into Kotlin Flow
jmatsu
1
300
ユーザーも開発者も悩ませない TV アプリ開発 ~Compose の内部実装から学ぶフォーカス制御~
taked137
0
140
Android端末で実現するオンデバイスLLM 2025
masayukisuda
1
120
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
320
速いWebフレームワークを作る
yusukebe
5
1.7k
時間軸から考えるTerraformを使う理由と留意点
fufuhu
15
4.6k
Laravel Boost 超入門
fire_arlo
2
210
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Balancing Empowerment & Direction
lara
3
620
The Cult of Friendly URLs
andyhume
79
6.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
Speed Design
sergeychernyshev
32
1.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
GitHub's CSS Performance
jonrohan
1032
460k
Designing for Performance
lara
610
69k
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 เป็นสีเขียว