
Git คืออะไร?
Git เป็นระบบควบคุมเวอร์ชันแบบกระจายที่เป็นโอเพนซอร์ส ช่วยให้นักพัฒนาและนักวิทยาศาสตร์ข้อมูลติดตามโค้ด ผสานการเปลี่ยนแปลง และย้อนกลับไปยังเวอร์ชันเก่าได้ - AWS ช่วยให้ซิงค์การเปลี่ยนแปลงกับเซิร์ฟเวอร์รีโมตได้ ด้วยความยืดหยุ่นและความนิยม Git จึงกลายเป็นมาตรฐานของอุตสาหกรรม เพราะรองรับแทบทุกสภาพแวดล้อมการพัฒนา เครื่องมือบรรทัดคำสั่ง และระบบปฏิบัติการ
Git ทำงานอย่างไร?
Git จัดเก็บไฟล์และประวัติการพัฒนาไว้ในรีโพในเครื่อง ทุกครั้งที่บันทึกการเปลี่ยนแปลง Git จะสร้างคอมมิต คอมมิตคือสแนปช็อตของไฟล์ปัจจุบัน คอมมิตเหล่านี้เชื่อมโยงกันเป็นกราฟประวัติการพัฒนา ดังภาพด้านล่าง ช่วยให้ย้อนกลับไปยังคอมมิตก่อนหน้า เปรียบเทียบการเปลี่ยนแปลง และดูความคืบหน้าของโครงการพัฒนาได้ - Azure DevOps คอมมิตระบุตัวตนด้วยแฮชที่ไม่ซ้ำ ใช้ในการเปรียบเทียบและย้อนการเปลี่ยนแปลง

กราฟของประวัติการพัฒนา
สาขา (Branches)
สาขาคือสำเนาของซอร์สโค้ดที่ทำงานคู่ขนานกับเวอร์ชันหลัก หากต้องการบันทึกการเปลี่ยนแปลง ให้ผสานสาขาเข้ากับเวอร์ชันหลัก คุณสมบัตินี้ช่วยสนับสนุนการทำงานเป็นทีมโดยไม่มีความขัดแย้ง นักพัฒนาแต่ละคนมีงานของตนเอง และด้วยการใช้สาขา จึงสามารถพัฒนาฟีเจอร์ใหม่โดยไม่ถูกรบกวนจากผู้อื่น เมื่อเสร็จงานแล้ว สามารถผสานฟีเจอร์ใหม่เข้ากับเวอร์ชันหลัก (สาขา master) หากต้องการเรียนรู้วิธีโคลนสาขา ดูบทเรียนนี้เกี่ยวกับ Git Clone Branch

เพิ่มฟีเจอร์ใหม่ให้กับรีโพ
คอมมิต (Commits)
ไฟล์ใน Git มี 3 สถานะ: modified, staged และ commit เมื่อแก้ไขไฟล์ การเปลี่ยนแปลงจะถูกบันทึกไว้ในไดเรกทอรีในเครื่องแต่ยังไม่เป็นส่วนหนึ่งของประวัติการพัฒนาใน Git หากต้องการสร้างคอมมิต ต้องนำไฟล์ที่เปลี่ยนแปลงไปไว้ใน staging ก่อน สามารถเพิ่มหรือลบการเปลี่ยนแปลงในพื้นที่ staging แล้วห่อรวมเป็นคอมมิตพร้อมข้อความอธิบายการเปลี่ยนแปลง

สามสถานะของไฟล์ใน Git
ประโยชน์ของ Git คืออะไร?
- ติดตามการเปลี่ยนแปลง: ช่วยให้นักพัฒนามองเห็นการเปลี่ยนแปลงย้อนหลัง ประวัติการพัฒนาช่วยให้ระบุและแก้ไขบั๊กได้ง่าย
- เชื่อมต่อกับ IDE: ด้วยความนิยม ทำให้มีการผสาน Git ในทุกสภาพแวดล้อมการพัฒนา เช่น VSCode และ JupyterLab
- ทำงานร่วมกันเป็นทีม: ทีมพัฒนามองเห็นความคืบหน้าได้ และด้วยการใช้สาขา สมาชิกสามารถทำงานของตนแยกกันแล้วผสานเข้ากับเวอร์ชันหลักได้ คำขอดึง แก้ไขความขัดแย้ง และการรีวิวโค้ด ช่วยส่งเสริมการทำงานร่วมกัน
- VSC แบบกระจาย: ในระบบแบบกระจายจะไม่มีที่จัดเก็บไฟล์ส่วนกลาง มีแบ็กอัปหลายชุดสำหรับโครงการเดียวกัน วิธีนี้ช่วยให้พัฒนางานออฟไลน์และคอมมิตการเปลี่ยนแปลงได้
Git สำหรับโครงการด้านวิทยาศาสตร์ข้อมูล
Git ให้การควบคุมเวอร์ชันสำหรับสคริปต์ เมตริก ข้อมูล และโมเดล โดยใช้ส่วนขยาย git-lfs สามารถจัดเก็บและจัดเวอร์ชันฐานข้อมูลขนาดใหญ่และโมเดลแมชชีนเลิร์นนิงได้ ในโครงการวิทยาศาสตร์ข้อมูลทั่วไป จะมีสมุดบันทึก Jupyter ชุดข้อมูล โมเดล เมทาดาทา และเมตริกของโมเดล เมทาดาทาประกอบด้วยไฟล์ที่เก็บข้อมูลเกี่ยวกับโมเดลแมชชีนเลิร์นนิง ฟีเจอร์ พารามิเตอร์ของโมเดล และไฟล์อัตโนมัติ ทั้งหมดนี้จำเป็นต่อการติดตามความคืบหน้าของแอปพลิเคชัน AI และการแก้ปัญหา
การติดตามการทดลองด้านข้อมูลช่วยให้นักวิทยาศาสตร์ย้อนการเปลี่ยนแปลงโดยไม่ตั้งใจ เลือกการทดลองที่ดีที่สุดตามตัวชี้วัดประสิทธิภาพ และทำงานร่วมกับเพื่อนร่วมทีม แผนภาพด้านล่างแสดงให้เห็นว่าการเปลี่ยนแปลงข้อมูลหรือโค้ดส่งผลต่อเมทาดาทาและผลลัพธ์ของโมเดลอย่างไร การติดตามการเปลี่ยนแปลงเหล่านี้ยังช่วยให้เพื่อนร่วมทีมคนอื่น ๆ คิดหาวิธีที่ดียิ่งขึ้นได้ เรียนรู้ ทุกเรื่องเกี่ยวกับ Git ในบล็อกล่าสุดโดย Summer Worsley

Git สำหรับโครงการวิทยาศาสตร์ข้อมูล
การทำงานร่วมกันด้วย GitHub
GitHub คือแพลตฟอร์มพัฒนาซอฟต์แวร์บนคลาวด์ ใช้กันทั่วไปสำหรับบันทึกไฟล์ ติดตามการเปลี่ยนแปลง และทำงานร่วมกันในโครงการพัฒนา ช่วงไม่กี่ปีนี้ GitHub กลายเป็นแพลตฟอร์มโซเชียลที่ได้รับความนิยมที่สุดสำหรับชุมชนนักพัฒนาซอฟต์แวร์ บุคคลทั่วไปสามารถมีส่วนร่วมในโครงการโอเพนซอร์สและรายงานบั๊ก พูดคุยโครงการใหม่ และค้นพบเครื่องมือใหม่ ๆ
นักวิทยาศาสตร์ข้อมูลและวิศวกรแมชชีนเลิร์นนิงกำลังเดินตามรอยนักพัฒนาซอฟต์แวร์ โดยผสานเวิร์กโฟลว์เข้ากับ GitHub วิธีนี้ช่วยให้แบ่งปันผลงานวิจัย เปิดให้ชุมชนมีส่วนร่วม และทำงานร่วมกับทีมข้อมูลได้ สามารถค้นพบโครงการด้านวิทยาศาสตร์ข้อมูลและแมชชีนเลิร์นนิงทุกประเภท คู่มือ บทเรียน และทรัพยากรบนแพลตฟอร์มนี้ สำหรับนักศึกษา แพลตฟอร์มนี้กลายเป็นโอกาสในการเก็บเกี่ยวประสบการณ์การทำงานและต่อยอดสู่การได้งานในบริษัทชั้นนำ
ผลงาน (Portfolio)
ผู้สรรหาทางเทคนิคส่วนใหญ่มักขอผลงานโครงการหรือโปรไฟล์ GitHub เพื่อช่วยประเมินว่าผู้สมัครเหมาะกับบริษัทหรือไม่ แนะนำอย่างยิ่งให้สร้างโปรไฟล์ GitHub และอัปเดตอย่างสม่ำเสมอ ผู้จัดการฝ่ายสรรหามักมองหาผู้สมัครที่มีประสบการณ์ด้านการพัฒนาซอฟต์แวร์และมีส่วนร่วมกับโอเพนซอร์ส การได้วิเคราะห์ผลงานบน GitHub ยังช่วยให้เตรียมคำถามสำหรับการสัมภาษณ์เชิงเทคนิคได้

โปรไฟล์ GitHub
GitHub เปิดโอกาสให้นักวิทยาศาสตร์ข้อมูลนำเสนอผลงานของตน และยังนับเป็นประสบการณ์ทำงานในเรซูเม่ได้ด้วย การนำเสนอโครงการในผลงานยังสร้างโอกาสในการร่วมงาน เปิดสตาร์ทอัพ และทำวิจัย

โครงการผลงาน
คุณสมบัติ (Features)
GitHub ยังมีคุณสมบัติอื่น ๆ ที่สำคัญไม่แพ้การนำเสนอผลงาน ควรเรียนรู้แต่ละคุณสมบัติเพื่อจะได้นำไปใช้ในโครงการวิทยาศาสตร์ข้อมูลได้
- โอเพนซอร์ส: GitHub มอบระบบนิเวศครบวงจรสำหรับโครงการโอเพนซอร์ส สามารถสนับสนุนผู้ดูแล ร่วมพัฒนา ใช้เครื่องมือโอเพนซอร์สในโครงการที่มีอยู่ และโปรโมตผลงานของตน
- ความร่วมมือของชุมชน: GitHub กลายเป็นแพลตฟอร์มชุมชนที่สามารถพูดคุยปัญหา คำขอฟีเจอร์ การมีส่วนร่วมด้านโค้ดและเอกสาร
- Explore: แท็บ GitHub Explore ช่วยค้นพบโครงการใหม่ เครื่องมือที่กำลังมาแรง และอีเวนต์สำหรับนักพัฒนา
- GitHub Gists: แชร์สแนิปเพ็ตโค้ดหรือฝังลงในบล็อกหรือเว็บไซต์ได้
- GitHub CLI: ช่วยทำคำขอผสาน รีวิวโค้ด ตรวจสอบอีชู และติดตามความคืบหน้าจากโปรแกรมบรรทัดคำสั่ง
- พื้นที่จัดเก็บฟรี: ที่เก็บแบบส่วนตัวและสาธารณะไม่จำกัด
- โฮสต์เว็บ: เผยแพร่เว็บไซต์ผลงานหรือเอกสารได้ GitHub Pages ช่วยให้สร้างและดีพลอยเว็บไซต์ได้ง่าย
- Codespace: สภาพแวดล้อมการพัฒนาบนคลาวด์ที่ผสานกับรีโพของคุณใน GitHub
- Project: เครื่องมือปรับแต่งยืดหยุ่นสำหรับวางแผนและติดตามงานบน GitHub
- ระบบอัตโนมัติ: GitHub Actions ทำให้งานพัฒนาต่าง ๆ เป็นอัตโนมัติ เช่น build, test, publish, release และ deployment
- ผู้สนับสนุน: สนับสนุนโครงการโอเพนซอร์สหรือนักพัฒนาที่ชื่นชอบได้แบบรายเดือนหรือครั้งเดียว และยังรองรับแพลตฟอร์มการชำระเงินภายนอกอย่าง ko-fi
คำสั่งพื้นฐาน
ก่อนจะเริ่มจัดการโครงการวิทยาศาสตร์ข้อมูล มาทำความรู้จักคำสั่ง Git ที่ใช้บ่อยที่สุดซึ่งจะได้ใช้ในทุกโครงการ คำสั่งพื้นฐานรวมถึงการเริ่มต้นรีโพ Git การบันทึกการเปลี่ยนแปลง ตรวจสอบล็อก ผลักการเปลี่ยนแปลงไปยังรีโมต และการผสาน
-
git initสร้างรีโพ Git ในไดเรกทอรีในเครื่อง -
git clone <remote-repo-address>: คัดลอกรีโพทั้งหมดจากเซิร์ฟเวอร์รีโมตไปยังไดเรกทอรีในเครื่อง ใช้คัดลอกรีโประดับเครื่องได้เช่นกัน -
git add <file.txt>: เพิ่มไฟล์เดี่ยวหรือหลายไฟล์และโฟลเดอร์ไปยังพื้นที่ staging -
git commit –m “Message”: สร้างสแนปช็อตของการเปลี่ยนแปลงและบันทึกไว้ในรีโพ -
git configใช้ตั้งค่าการกำหนดค่าของผู้ใช้ เช่น อีเมล ชื่อผู้ใช้ และรูปแบบไฟล์ -
git statusแสดงรายการไฟล์ที่เปลี่ยนแปลงหรือไฟล์ที่ยังไม่ได้ staged และ committed -
git push <remote-name> <branch-name>: ส่งคอมมิตในเครื่องไปยังสาขารีโมตของรีโพ -
git checkout -b <branch-name>: สร้างสาขาใหม่และสลับไปยังสาขาใหม่ -
git remote –v: ดูรีโมตทั้งหมด -
git remote add <remote-name> <host-or-remoteURL>: เพิ่มเซิร์ฟเวอร์รีโมตให้กับรีโพในเครื่อง -
git branch –d <branch-name>: ลบสาขา -
git pull mergeคอมมิตจากรีโพรีโมตเข้ามายังไดเรกทอรีในเครื่อง -
git merge <branch-name>: หลังแก้ไขความขัดแย้งแล้ว คำสั่งจะผสานสาขาที่เลือกเข้ากับสาขาปัจจุบัน -
git logแสดงรายการคอมมิตโดยละเอียดสำหรับสาขาปัจจุบัน

พัฒนาครบวงจรด้วย GitHub
หากสนใจเรียนรู้คำสั่งเพิ่มเติม โปรดดู Git cheat sheet ของเรา
เริ่มต้นใช้งาน
ในส่วนนี้ เราจะใช้ Git เพื่อติดตามโครงการวิทยาศาสตร์ข้อมูล และใช้ GitHub เป็นเซิร์ฟเวอร์รีโมต จะเรียนรู้การติดตั้ง Git การสร้างและโคลนรีโพจาก GitHub การรันการทดลองแมชชีนเลิร์นนิง และการผลักการเปลี่ยนแปลง (notebook, โมเดล, ข้อมูล) ไปยัง GitHub โดยใช้ Windows PowerShell 7
ติดตั้ง Git
Git รองรับทุกระบบปฏิบัติการ สามารถติดตั้งผ่านเครื่องมือบรรทัดคำสั่งหรือดาวน์โหลดตัวติดตั้งมาติดตั้งได้โดยตรง
Linux
สำหรับระบบ Debian/Ubuntu ใช้ `apt-get install git` หากใช้ดิสทริบิวชัน Linux อื่น โปรดดูรายการคำสั่งติดตั้งทั้งหมดได้ ที่นี่
macOS
หากติดตั้ง homebrew แล้ว ใช้คำสั่งนี้เพื่อติดตั้ง Git: `brew install git` หรือจะดาวน์โหลดตัวติดตั้งแบบไบนารี installer แล้วรันก็ได้
Windows
การติดตั้ง Git บน Windows ทำได้ไม่ยุ่งยาก ไปที่หน้า ดาวน์โหลด คลิกเลือกเวอร์ชันของ Windows แล้วดาวน์โหลดและติดตั้ง หากมี winget tool สามารถติดตั้งได้ด้วยการพิมพ์ winget install --id Git.Git -e --source winget ใน PowerShell
หลังติดตั้ง Git แล้ว อย่าลืมกำหนดชื่อผู้ใช้และอีเมล ข้อมูลนี้ใช้ลงนามในคอมมิต
git config --global user.name "your-user-name"
git config --global user.email "your@email.com"
หากต้องการข้อมูลเชิงลึกเกี่ยวกับการติดตั้ง Git คลิก ที่นี่
เริ่มต้นโครงการ
หากมีบัญชี GitHub ให้คลิกปุ่ม + แล้วเลือกสร้างรีโพใหม่ จากนั้นพิมพ์ชื่อรีโพและคำอธิบายสั้น ๆ จะได้รีโพสาธารณะว่างเปล่าหนึ่งชุด

สร้างโครงการ
มีหลายวิธีในการโคลนรีโมตไปยังไดเรกทอรีในเครื่อง และ GitHub มีคำแนะนำละเอียดเกี่ยวกับการโคลน เพิ่มรีโมต และเริ่มต้นโครงการ Git

การโคลนจาก GitHub
สามารถโคลนรีโพได้ง่าย ๆ ด้วยลิงก์ HTTPS ตรวจสอบให้แน่ใจว่าอยู่ในไดเรกทอรีทำงานด้วย Command Prompt หรือ PowerShell
git clone https://github.com/kingabzpro/DataCamp-Git.git
>>> Cloning into 'DataCamp-Git'...
>>> warning: You appear to have cloned an empty repository.
cd .\DataCamp-Git\
หรือ
สร้างไดเรกทอรีใหม่ชื่อ “DataCamp-Git” และเริ่มต้น Git ด้วยคำสั่งง่าย ๆ จากนั้นเพิ่มการเชื่อมต่อไปยังรีโมตเพื่อให้ซิงค์งานกับ GitHub ได้
mkdir DataCamp-Git
cd .\DataCamp-Git
git init
>>> Initialized empty Git repository in C:/Repository/GitHub/DataCamp-Git/.git/
git remote add origin https://github.com/kingabzpro/DataCamp-Git.git
หรือ
หากมีโครงการอยู่แล้วในไดเรกทอรี เพียงเริ่มต้น Git ด้วย `git init` และเพิ่มรีโมตของ GitHub ตามตัวอย่างด้านบน
คอมมิตอย่างง่าย
ก่อนเพิ่มไฟล์ลงรีโพ ตรวจสอบให้แน่ใจว่าอยู่ในไดเรกทอรีในเครื่องที่ถูกต้อง
เริ่มจากการสร้างไฟล์ README โดยใส่หัวข้อ DataCamp-Git แล้วเพิ่มไปยังพื้นที่ staging ด้วย `git add`
echo "# DataCamp-Git" >> README.md
git add README.md
git status จะแสดงว่าเราอยู่บนสาขาหลัก และไฟล์ `README.md` อยู่ในสถานะ staged พร้อมสำหรับการคอมมิต
git status
>>> On branch main
>>> No commits yet
>>> Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
เพื่อสร้างคอมมิตแรก ใช้ `git commit` พร้อมข้อความ จะเห็นว่าคอมมิตแรกถูกเพิ่มด้วยแฮช ed9c886
git commit -m "first commit"
>>> [main (root-commit) ed9c886] first commit
>>> 1 file changed, 1 insertion(+)
>>> create mode 100644 README.md
เพิ่มไฟล์โครงการ
เราจะใช้ DataCamp workspace MasterCard Stock Price with LSTM and GRU และดาวน์โหลดไฟล์ ผู้เขียนได้เตรียมข้อมูลและฝึกแบบจำลองลำดับเวลาบน LSTM และ GRU เรียนรู้เพิ่มเติมเกี่ยวกับโครงการได้จาก Recurrent Neural Network Tutorial (RNN)
เพื่อบันทึกไฟล์โมเดล เราได้เพิ่มเซลล์โค้ดใหม่ในสมุดบันทึก Jupyter ของโครงการ สคริปต์ใหม่นี้จะสร้างไดเรกทอรีชื่อ “model” และบันทึกทั้งโมเดล LSTM และ GRU
!mkdir -p model
model_lstm.save('model/LSTM')
model_gru.save('model/GRU')
จะเห็นว่ารีโพ Git มีโฟลเดอร์ data ที่บรรจุไฟล์ CSV และโฟลเดอร์ model ที่มีน้ำหนักของโมเดลและเมทาดาทา

จากนั้นเราจะนำไฟล์ทั้งหมดไปไว้ใน staging สามารถระบุไดเรกทอรี ไฟล์ หรือข้อมูลใด ๆ ต่อท้ายคำสั่งเริ่มต้นได้
git add .\data .\model LSTM_GRU.ipynb RNN.png
หรือ
หากต้องการเพิ่มไฟล์ทั้งหมดไปยังพื้นที่ staging ให้ใช้จุด
git add .
คอมมิตและผลักขึ้น (Push)
เราจะคอมมิตการเปลี่ยนแปลงทั้งหมดด้วยข้อความง่าย ๆ และผลลัพธ์จะแสดงไฟล์ใหม่ทั้งหมดในโหมดสร้าง
git commit -m "project files added"
>>> [main aa3e19a] project files added
>>> 10 files changed, 5020 insertions(+)
>>> create mode 100644 LSTM_GRU.ipynb
>>> create mode 100644 RNN.png
>>> create mode 100644 data/Mastercard_stock_history.csv
>>> create mode 100644 data/Mastercard_stock_info.csv
>>> create mode 100644 model/GRU/saved_model.pb
>>> create mode 100644 model/GRU/variables/variables.data-00000-of-00001
>>> create mode 100644 model/GRU/variables/variables.index
>>> create mode 100644 model/LSTM/saved_model.pb
>>> create mode 100644 model/LSTM/variables/variables.data-00000-of-00001
create mode 100644 model/LSTM/variables/variables.index
การซิงค์กับรีโมตบน GitHub ต้องใช้ชื่อรีโมตและชื่อสาขา `git push <remote-name> <branch-name>` หากมีเพียงรีโมตเดียวและสาขาเดียว ใช้แค่ `git push` ก็ได้
หลัง `git push` จะมีหน้าต่างป๊อปอัปถามข้อมูลยืนยันตัวตน ให้ใส่ชื่อผู้ใช้หรือรหัสผ่าน GitHub หรือสร้าง Personal access tokens แล้วใช้แทนรหัสผ่านก็ได้ อ่านเพิ่มเติมได้ใน บทเรียน Git Push และ Pull
git push
>>> Enumerating objects: 21, done.
>>> Counting objects: 100% (21/21), done.
>>> Delta compression using up to 4 threads
>>> Compressing objects: 100% (19/19), done.
>>> Writing objects: 100% (21/21), 1.83 MiB | 1.59 MiB/s, done.
>>> Total 21 (delta 2), reused 0 (delta 0), pack-reused 0
>>> remote: Resolving deltas: 100% (2/2), done.
>>> To https://github.com/kingabzpro/DataCamp-Git.git
>>> * [new branch] main -> main
เราจะไปตรวจดูรีโพ GitHub ของเรา kingabzpro/DataCamp-Git ว่าผลักการเปลี่ยนแปลงขึ้นรีโมตสำเร็จหรือไม่ รีโพบน GitHub มีไฟล์ ข้อมูล และโมเดลครบถ้วน

ผลักขึ้น GitHub สำเร็จ
สาขาใน Git
แนะนำให้ทำงานด้วยสาขา เช่น หากต้องการทำเอกสารโครงการ ให้สร้างสาขา documentation ด้วย git checkout หรือ git branch แก้ไขไฟล์ README และเมื่อสรุปการเปลี่ยนแปลงแล้ว ให้ผสานสาขาเข้ากับฐาน
ในที่นี้ เราได้สร้างและสลับไปยังสาขาใหม่ชื่อ readme
git checkout -b readme
มาแก้ไขไฟล์ README โดยเพิ่มคำอธิบายโครงการและลิงก์ไปยัง workspace RNN ของ DataCamp และบทเรียน จากนั้นนำการเปลี่ยนแปลงไปไว้ใน staging และบันทึกสแนปช็อตพร้อมข้อความ
git add README.md
git commit -m "project description and links to blog"
>>> [readme f3b8b9b] project description and links to blog
>>> 1 file changed, 8 insertions(+)
ในรีโมตยังไม่มีสาขา readme หากต้องการสร้างสาขาใหม่และผลักการเปลี่ยนแปลง ให้ใช้ “readme:readme” ผลลัพธ์จะแสดงว่าสร้างสาขาใหม่แล้ว และสาขา `readme` ทั้งในเครื่องและบนรีโมตซิงค์กันเรียบร้อย
git push origin readme:readme
>>> remote: Resolving deltas: 100% (1/1), completed with 1 local object.
>>> remote: Create a pull request for 'readme' on GitHub by visiting:
>>> remote: https://github.com/kingabzpro/DataCamp-Git/pull/new/readme
>>> remote:
To https://github.com/kingabzpro/DataCamp-Git.git
>>> * [new branch] readme -> readme
จะเห็นว่าเราผลักสาขาในเครื่องขึ้น GitHub ได้สำเร็จ พร้อมไฟล์ README.md ที่แก้ไขแล้ว

สาขา readme บน GitHub
คำขอดึง (Pull request)
ฟังก์ชันนี้พบบ่อยในองค์กร ตัวอย่างเช่น นักพัฒนาซอฟต์แวร์พัฒนาฟีเจอร์ใหม่และต้องการผสานเข้ากับสาขาหลักบนรีโมต เราจะสร้างคำขอดึงด้วย GUI ของ GitHub โดยคลิกปุ่ม pull request จากนั้นเลือกสาขา readme ที่ต้องการผสานกับฐาน (main) สามารถพิมพ์คำอธิบายรายละเอียดของฟีเจอร์ที่เพิ่มและคลิกปุ่ม pull request

คำขอดึงจาก readme ไปยังสาขา main
ผู้ดูแลรีโพจะเปรียบเทียบการเปลี่ยนแปลงของคุณและผสานเมื่อผ่านการทดสอบทั้งหมด ในกรณีนี้คุณคือผู้ดูแล จึงคลิกคำขอผสานเพื่อผสานการเปลี่ยนแปลงเข้ากับสาขาหลัก

ผสานคำขอดึงบน GitHub
ขอแสดงความยินดี เราสร้างคำขอดึงและผสานเข้ากับสาขาหลักสำเร็จแล้ว สามารถดูการเปลี่ยนแปลงบนสาขาหลักได้ ที่นี่
หากต้องการดูการเปลี่ยนแปลงทั้งหมดในรีโพของคุณ ให้พิมพ์ `git log` จะแสดงประวัติการเปลี่ยนแปลงของโครงการ การบันทึกประวัติในโครงการวิทยาศาสตร์ข้อมูลมีความสำคัญ และ Git ช่วยติดตามการเปลี่ยนแปลงทั้งหมดได้ แม้กับชุดข้อมูลขนาดใหญ่

ประวัติ Git Logs
สรุปท้ายบท
GitOps มีความสำคัญต่อการพัฒนาแอปพลิเคชันด้านข้อมูล และกลายเป็นทักษะจำเป็นสำหรับงานไอทีทุกประเภท แม้แต่นักวิจัยในสถาบันการศึกษาก็ใช้เพื่อแบ่งปันโค้ดการทดลองกับผู้ชมวงกว้าง ด้าน GitHub เองก็มีบทบาทสำคัญในการส่งเสริมโครงการโอเพนซอร์สด้วยการมอบระบบนิเวศการพัฒนาซอฟต์แวร์ฟรีสำหรับทุกคน
ในบทเรียนนี้ เราได้เรียนรู้เกี่ยวกับ Git และ GitHub และเหตุใดจึงสำคัญต่อโครงการวิทยาศาสตร์ข้อมูล บทเรียนนี้ยังพาไปรู้จักคำสั่งพื้นฐานของ Git และฝึกปฏิบัติการติดตามการเปลี่ยนแปลงของข้อมูล โมเดล และโค้ด หากสนใจเรียนรู้เพิ่มเติมเกี่ยวกับ Git แนะนำคอร์ส Introduction to Git บน DataCamp คุณยังสามารถเรียนรู้เกี่ยวกับความสำคัญของ การรับรอง GitHub Foundations และประโยชน์ต่ออาชีพการงานได้
คำถามที่พบบ่อยเกี่ยวกับ Git
Git คืออะไร?
ระบบควบคุมเวอร์ชันแบบกระจายที่เป็นโอเพนซอร์ส ช่วยให้นักพัฒนาเก็บ เวอร์ชัน และแสดงการเปลี่ยนแปลงภายในโครงการพัฒนา สนับสนุนการทำงานเป็นทีมที่ยืดหยุ่นและเวิร์กโฟลว์ที่มีประสิทธิภาพ
คำว่า Git ย่อมาจากอะไร?
ไม่ใช่อักษรย่อ ตามที่ผู้สร้างอย่าง Linus Torvalds กล่าวไว้ว่า “Git สามารถหมายความว่าอะไรก็ได้ ตามอารมณ์ของคุณ” เป็นการรวมกันของอักษรสามตัวแบบสุ่มที่ไม่มีคำสั่งใดใน UNIX ใช้งานอยู่
จะโคลนที่เก็บ Git ได้อย่างไร?
เพียงพิมพ์ `git clone <remote repository address>` ในเทอร์มินัล สามารถโคลนได้ทั้งรีโมตและในเครื่อง รองรับทั้งโปรโตคอล SSH และ HTTPS
จะลบสาขาใน Git อย่างไร?
ลบสาขาในเครื่องด้วย `git branch -d <local_branch_name>` และลบสาขาบนรีโมตด้วย `git push <remote_name> -d <remote_branch_name>`
จะสลับสาขาใน Git อย่างไร?
สลับไปยังสาขาที่มีอยู่ด้วย `git checkout <branch name>` หรือสร้างและสลับไปยังสาขาใหม่ด้วย `git checkout -b <branch name>`
จะติดตั้ง Git ได้อย่างไร?
สำหรับระบบ Linux ใช้ `apt-get install git` สำหรับระบบปฏิบัติการอื่นโปรดดูได้ที่ git-scm.com
Git ฟรีหรือไม่?
ใช่ ฟรีและเป็นโอเพนซอร์สภายใต้สัญญาอนุญาต GPL-2.0
Git Bash คืออะไร?
เป็นแอปพลิเคชันบน Microsoft Windows ที่มอบยูทิลิตี้เชลล์แบบยูนิกซ์และประสบการณ์การใช้งาน
จะสร้างสาขาใหม่ใน Git อย่างไร?
ใช้คำสั่ง `git branch <new-branch> <base-branch>` ในเทอร์มินัล หากต้องการสร้างและสลับไปยังสาขาใหม่ ใช้ `git checkout -b <branch name>`
คำสั่ง git pull ทำอะไร?
อัปเดตเวอร์ชันในเครื่องของรีโพจากเซิร์ฟเวอร์รีโมต คัดลอกการเปลี่ยนแปลงทั้งหมดจากรีโมตและผสานเข้ากับไดเรกทอรีในเครื่อง กระบวนการนี้มักต้องแก้ไขความขัดแย้งในการผสาน
จะโฟร์ครีโพใน Git อย่างไร?
การโฟร์คใน GitHub คือการคัดลอกรีโพจากบัญชีหนึ่งไปยังบัญชี GitHub ของผู้ใช้ มักใช้เพื่อการมีส่วนร่วมของชุมชนหรือการทำงานเป็นทีม
จะเปลี่ยนชื่อสาขาใน Git อย่างไร?
สำหรับรีโพในเครื่อง ใช้ `git branch -m <old-name> <new-name>` ได้เลย สำหรับการเปลี่ยนชื่อสาขาบนรีโมต ให้ลบสาขาเก่าก่อนด้วย `git push origin --delete <old-name>` แล้วจึงผลักสาขาใหม่ด้วย `git push -u origin <new_name>`
จะลบรีโพ Git ได้อย่างไร?
ลบโฟลเดอร์ในเครื่องทิ้ง หรือเอาโฟลเดอร์ .git ออกด้วย `rm -fr .git` สำหรับ GitHub ไปที่การตั้งค่าของรีโพ และที่ท้ายหน้าเพจจะมีตัวเลือกลบ
จะติดตั้ง Git บน Windows อย่างไร?
ดาวน์โหลดโปรแกรมติดตั้งสำหรับ Windows จาก เว็บไซต์ แล้วรันเพื่อติดตั้ง Git Bash, Git CDM และ Git GUI
จะย้อนคอมมิตใน Git อย่างไร?
ใช้ `git revert <commit sha>` โดยต้องมีแฮชที่ไม่ซ้ำของคอมมิตก่อนหน้า หรือใช้ `git revert HEAD~2` ซึ่งหมายถึงย้อนกลับสองคอมมิตจากหัว