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
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
Basic Architectures
denyspoltorak
0
660
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.5k
高速開発のためのコード整理術
sutetotanuki
1
390
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
240
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
180
Data-Centric Kaggle
isax1015
2
760
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
490
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
130
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
380
AgentCoreとHuman in the Loop
har1101
5
220
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.6k
A Tale of Four Properties
chriscoyier
162
24k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
250
Building the Perfect Custom Keyboard
takai
2
680
How GitHub (no longer) Works
holman
316
140k
Done Done
chrislema
186
16k
New Earth Scene 8
popppiees
1
1.5k
Typedesign – Prime Four
hannesfritz
42
2.9k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
54
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 เป็นสีเขียว