ค้นหาเว็บไซต์

วิธีใช้ระบบควบคุมเวอร์ชัน Git ใน Linux [คู่มือที่ครอบคลุม]


การควบคุมเวอร์ชัน (การควบคุมการแก้ไขหรือการควบคุมแหล่งที่มา) เป็นวิธีการบันทึกการเปลี่ยนแปลงในไฟล์หรือคอลเลกชันของไฟล์เมื่อเวลาผ่านไป เพื่อให้คุณสามารถเรียกคืนเวอร์ชันที่ต้องการได้ในภายหลัง ระบบควบคุมเวอร์ชัน (หรือเรียกสั้นๆ ว่า VCS) เป็นเครื่องมือที่บันทึกการเปลี่ยนแปลงของไฟล์ในระบบไฟล์

มีระบบควบคุมเวอร์ชันอยู่มากมาย แต่ในปัจจุบัน Git ได้รับความนิยมและใช้บ่อยที่สุด โดยเฉพาะอย่างยิ่งสำหรับการจัดการซอร์สโค้ด การควบคุมเวอร์ชันสามารถใช้ได้กับไฟล์เกือบทุกประเภทบนคอมพิวเตอร์ ไม่ใช่แค่ซอร์สโค้ดเท่านั้น

ระบบ/เครื่องมือควบคุมเวอร์ชันมีคุณสมบัติหลายประการที่ช่วยให้บุคคลหรือกลุ่มบุคคลสามารถ:

  • สร้างเวอร์ชันของโปรเจ็กต์
  • ติดตามการเปลี่ยนแปลงได้อย่างถูกต้องและแก้ไขข้อขัดแย้ง
  • รวมการเปลี่ยนแปลงให้เป็นเวอร์ชันทั่วไป
  • ย้อนกลับและเลิกทำการเปลี่ยนแปลงไฟล์ที่เลือกหรือทั้งโครงการ
  • เข้าถึงเวอร์ชันที่ผ่านมาของโปรเจ็กต์เพื่อเปรียบเทียบการเปลี่ยนแปลงเมื่อเวลาผ่านไป
  • ดูว่าใครแก้ไขสิ่งที่อาจทำให้เกิดปัญหาครั้งล่าสุด
  • สร้างการสำรองข้อมูลนอกสถานที่ที่ปลอดภัยของโครงการ
  • ใช้เครื่องจักรหลายเครื่องเพื่อทำงานในโครงการเดียวและอื่นๆ อีกมากมาย

โปรเจ็กต์ภายใต้ระบบควบคุมเวอร์ชัน เช่น Git จะมีสามส่วนหลักๆ ได้แก่:

  • พื้นที่เก็บข้อมูล: ฐานข้อมูลสำหรับบันทึกสถานะหรือการเปลี่ยนแปลงไฟล์โครงการของคุณ ประกอบด้วยเมตาดาต้า Git และออบเจ็กต์ที่จำเป็นทั้งหมดสำหรับโปรเจ็กต์ใหม่ โปรดทราบว่าโดยปกตินี่คือสิ่งที่จะถูกคัดลอกเมื่อคุณโคลนพื้นที่เก็บข้อมูลจากคอมพิวเตอร์เครื่องอื่นบนเครือข่ายหรือเซิร์ฟเวอร์ระยะไกล
  • ไดเร็กทอรีหรือพื้นที่ทำงาน: เก็บสำเนาของไฟล์โครงการที่คุณสามารถใช้งานได้ (เพิ่ม ลบ และดำเนินการแก้ไขอื่นๆ)
  • พื้นที่จัดเตรียม: ไฟล์ (เรียกว่าดัชนีภายใต้ Git) ภายในไดเร็กทอรี Git ที่เก็บข้อมูลเกี่ยวกับการเปลี่ยนแปลงที่คุณพร้อมที่จะส่ง (บันทึกสถานะของไฟล์หรือชุดของไฟล์) ไปยังที่เก็บ

VCS มีสองประเภทหลัก โดยความแตกต่างหลักคือจำนวนที่เก็บ:

  • ระบบควบคุมเวอร์ชันแบบรวมศูนย์ (CVCS): ที่นี่สมาชิกในทีมโครงการแต่ละคนจะได้รับไดเร็กทอรีการทำงานในเครื่องของตนเอง อย่างไรก็ตาม พวกเขาทำการเปลี่ยนแปลงกับที่เก็บข้อมูลกลางเพียงแห่งเดียว
  • ระบบควบคุมเวอร์ชันแบบกระจาย (DVCS): ภายใต้สิ่งนี้ สมาชิกในทีมโครงการแต่ละคนจะได้รับไดเร็กทอรีการทำงานในเครื่องและไดเร็กทอรี Git ของตนเองซึ่งพวกเขาสามารถคอมมิตได้ หลังจากที่บุคคลกระทำการภายในเครื่อง สมาชิกในทีมคนอื่นๆ จะไม่สามารถเข้าถึงการเปลี่ยนแปลงได้จนกว่าเขา/เธอจะพุชการเปลี่ยนแปลงเหล่านั้นไปยังพื้นที่เก็บข้อมูลส่วนกลาง Git เป็นตัวอย่างของ DVCS

นอกจากนี้ พื้นที่เก็บข้อมูล Git อาจเป็น bare (พื้นที่เก็บข้อมูลที่ไม่มีไดเร็กทอรีที่ใช้งานได้) หรือ ไม่เปลือย (อันที่มีไดเร็กทอรีที่ใช้งานได้ ไดเรกทอรี) พื้นที่เก็บข้อมูล ที่ใช้ร่วมกัน (หรือสาธารณะหรือส่วนกลาง) ควรจะว่างเปล่าเสมอ โดยที่เก็บข้อมูล Github ทั้งหมดจะว่างเปล่า

เรียนรู้การควบคุมเวอร์ชันด้วย Git

Git เป็นระบบโอเพ่นซอร์สฟรี รวดเร็ว ทรงพลัง กระจาย ใช้งานง่าย และเป็นที่นิยม มีประสิทธิภาพมากกับโปรเจ็กต์ขนาดใหญ่ และมีระบบแยกและผสานที่โดดเด่น ได้รับการออกแบบมาเพื่อจัดการข้อมูลเหมือนกับชุดสแน็ปช็อตของระบบไฟล์ขนาดเล็ก ซึ่งจัดเก็บไว้ในไดเร็กทอรี Git

ขั้นตอนการทำงานภายใต้ Git นั้นง่ายมาก: คุณทำการแก้ไขไฟล์ในไดเร็กทอรีการทำงานของคุณ จากนั้นเลือกเฉพาะไฟล์ที่มีการเปลี่ยนแปลงไปยังพื้นที่ชั่วคราว เพื่อเป็นส่วนหนึ่งของการดำเนินการครั้งถัดไป

เมื่อคุณพร้อมแล้ว ให้คุณคอมมิต ซึ่งจะนำไฟล์จากพื้นที่จัดเตรียมและบันทึกสแน็ปช็อตนั้นไปยังไดเร็กทอรี Git อย่างถาวร

หากต้องการติดตั้ง Git ใน Linux ให้ใช้คำสั่งที่เหมาะสมสำหรับการแจกจ่ายที่คุณเลือก:

sudo apt install git   [On Debian/Ubuntu]
sudo yum install git   [On CentOS/RHEL]

หลังจากติดตั้ง Git ขอแนะนำให้คุณบอก Git ว่าคุณเป็นใครโดยระบุชื่อเต็มและที่อยู่อีเมลดังนี้:

git config --global user.name “Aaron Kili”
git config --global user.email “[email ”

หากต้องการตรวจสอบการตั้งค่า Git ของคุณ ให้ใช้คำสั่งต่อไปนี้

git config --list 

สร้างพื้นที่เก็บข้อมูล Git ใหม่

พื้นที่เก็บข้อมูล ที่ใช้ร่วมกัน หรือเวิร์กโฟลว์แบบรวมศูนย์เป็นเรื่องธรรมดามากและนั่นคือสิ่งที่เราจะสาธิตที่นี่ ตัวอย่างเช่น เราถือว่าคุณได้รับมอบหมายให้ตั้งค่าพื้นที่เก็บข้อมูลส่วนกลางระยะไกลสำหรับผู้ดูแลระบบ/โปรแกรมเมอร์จากแผนกต่างๆ ในองค์กรของคุณ เพื่อทำงานในโครงการที่เรียกว่า bashscripts ซึ่งจะถูกเก็บไว้ภายใต้ /projects/scritpts/ บนเซิร์ฟเวอร์

SSH ลงในเซิร์ฟเวอร์ระยะไกลและสร้างไดเร็กทอรีที่จำเป็น สร้างกลุ่มชื่อ sysadmins (เพิ่มสมาชิกทีมโครงการทั้งหมดในกลุ่มนี้ เช่น ผู้ดูแลระบบผู้ใช้) และตั้งค่าการอนุญาตที่เหมาะสมใน ไดเรกทอรีนี้

mkdir-p /projects/scripts/
groupadd sysadmins
usermod -aG sysadmins admin
chown :sysadmins -R /projects/scripts/
chmod 770 -R /projects/scripts/

จากนั้นเริ่มต้นพื้นที่เก็บข้อมูลโปรเจ็กต์เปล่า

git init --bare /projects/scripts/bashscripts

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

ls -la /projects/scripts/bashscripts/

โคลนพื้นที่เก็บข้อมูล Git

ตอนนี้โคลนพื้นที่เก็บข้อมูล Git ที่แชร์ระยะไกลไปยังคอมพิวเตอร์ของคุณผ่าน SSH (คุณสามารถโคลนผ่าน HTTP/HTTPS ได้หากคุณมีเว็บเซิร์ฟเวอร์ติดตั้งและกำหนดค่าอย่างเหมาะสม เช่นเดียวกับ กรณีที่มีพื้นที่เก็บข้อมูลสาธารณะส่วนใหญ่บน Github) เช่น:

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts 

หากต้องการโคลนไปยังไดเร็กทอรีเฉพาะ (~/bin/bashscripts) ให้ใช้คำสั่งด้านล่าง

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts ~/bin/bashscripts

ตอนนี้คุณมีอินสแตนซ์ในเครื่องของโปรเจ็กต์ในพื้นที่เก็บข้อมูล ไม่เปลือย (พร้อมไดเร็กทอรีที่ใช้งานได้) คุณสามารถสร้างโครงสร้างเริ่มต้นของโปรเจ็กต์ได้ (เช่น เพิ่ม README.md ไดเร็กทอรีย่อยสำหรับสคริปต์ประเภทต่างๆ เช่น recon เพื่อจัดเก็บสคริปต์การลาดตระเวน sysadmin ro store sysadmin scripts ฯลฯ):

cd ~/bin/bashscripts/
ls -la

ตรวจสอบสรุปสถานะ Git

หากต้องการแสดงสถานะของไดเร็กทอรีการทำงานของคุณ ให้ใช้ คำสั่งสถานะ ซึ่งจะแสดงให้คุณเห็นการเปลี่ยนแปลงใด ๆ ที่คุณทำ Git ไม่ได้รับการติดตามไฟล์ใด การเปลี่ยนแปลงเหล่านั้นที่ได้จัดฉากไว้เป็นต้น

git status 

การเปลี่ยนแปลงและความมุ่งมั่นใน Git Stage

จากนั้น จัดทำการเปลี่ยนแปลงทั้งหมดโดยใช้ คำสั่งเพิ่ม พร้อมด้วยสวิตช์ -A และดำเนินการเริ่มต้น ธง -a สั่งให้คำสั่งจัดระยะไฟล์ที่ได้รับการแก้ไขโดยอัตโนมัติ และ -m ใช้เพื่อระบุข้อความที่คอมมิต:

git add -A
git commit -a -m "Initial Commit"

เผยแพร่ Local Commits ไปยัง Remote Git Repository

ในฐานะหัวหน้าทีมโครงการ เมื่อคุณสร้างโครงสร้างโครงการแล้ว คุณสามารถเผยแพร่การเปลี่ยนแปลงไปยังพื้นที่เก็บข้อมูลกลางได้โดยใช้ คำสั่งพุช ดังที่แสดง

git push origin master

ขณะนี้ พื้นที่เก็บข้อมูล git ในเครื่องของคุณควรอัปเดตด้วยพื้นที่เก็บข้อมูลกลางของโปรเจ็กต์ (ต้นทาง) คุณสามารถยืนยันได้ด้วยการเรียกใช้ คำสั่งสถานะ อีกครั้ง

git status

คุณยังสามารถแจ้งให้เพื่อนร่วมงานของคุณเริ่มทำงานในโครงการได้โดยการโคลนพื้นที่เก็บข้อมูลไปยังคอมพิวเตอร์ในพื้นที่ของพวกเขา

สร้างสาขา Git ใหม่

การแตกสาขาช่วยให้คุณสามารถทำงานกับฟีเจอร์ของโปรเจ็กต์ของคุณหรือแก้ไขปัญหาได้อย่างรวดเร็วโดยไม่ต้องแตะโค้ดเบส (สาขาหลัก) หากต้องการสร้างสาขาใหม่แล้วสลับไปที่สาขานั้น ให้ใช้คำสั่ง branch และ checkout ตามลำดับ

git branch latest
git checkout latest

หรือคุณสามารถสร้างสาขาใหม่และสลับไปในขั้นตอนเดียวโดยใช้ คำสั่งชำระเงิน พร้อมด้วยแฟล็ก -b

git checkout -b latest

คุณยังสามารถสร้างสาขาใหม่ตามสาขาอื่นได้อีกด้วย

git checkout -b latest master

หากต้องการตรวจสอบว่าคุณอยู่ในสาขาใด ให้ใช้ คำสั่งสาขา (เครื่องหมายดอกจันหมายถึงสาขาที่ใช้งานอยู่):

git branch

หลังจากสร้างและสลับไปยังสาขาใหม่แล้ว ให้ทำการเปลี่ยนแปลงบางส่วนภายใต้สาขานั้นและดำเนินการบางอย่าง

vim sysadmin/topprocs.sh
git status
git commit add  sysadmin/topprocs.sh
git commit -a -m 'modified topprocs.sh'

รวมการเปลี่ยนแปลงจากสาขาหนึ่งไปอีกสาขาหนึ่ง

หากต้องการรวมการเปลี่ยนแปลงภายใต้การทดสอบสาขาเข้ากับสาขาหลัก ให้สลับไปที่สาขาหลักแล้วทำการผสาน

git checkout master 
git merge test 

หากคุณไม่ต้องการสาขาใดสาขาหนึ่งอีกต่อไป คุณสามารถลบสาขานั้นได้โดยใช้สวิตช์ -d

git branch -d test

ดาวน์โหลดการเปลี่ยนแปลงจาก Remote Central Repository

สมมติว่าสมาชิกในทีมของคุณได้พุชการเปลี่ยนแปลงไปยังที่เก็บโปรเจ็กต์กลาง คุณสามารถดาวน์โหลดการเปลี่ยนแปลงใดๆ ไปยังอินสแตนซ์ในเครื่องของโปรเจ็กต์ได้โดยใช้ คำสั่ง pull

git pull origin
OR
git pull origin master	#if you have switched to another branch

ตรวจสอบพื้นที่เก็บข้อมูล Git และทำการเปรียบเทียบ

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

คุณสมบัติแรกคือบันทึก Git ซึ่งแสดงบันทึกการคอมมิต:

git log

คุณสมบัติที่สำคัญอีกประการหนึ่งคือ คำสั่งแสดง ซึ่งแสดงออบเจ็กต์ประเภทต่างๆ (เช่น คอมมิต แท็ก ต้นไม้ ฯลฯ..):

git show

คุณสมบัติสำคัญประการที่สามที่คุณต้องรู้คือคำสั่ง diff ที่ใช้ในการเปรียบเทียบหรือแสดงความแตกต่างระหว่างสาขา แสดงการเปลี่ยนแปลงระหว่างไดเร็กทอรีการทำงานและดัชนี การเปลี่ยนแปลงระหว่างสองไฟล์บนดิสก์ และอื่นๆ อีกมากมาย

ตัวอย่างเช่น เพื่อแสดงความแตกต่างระหว่างสาขาหลักและสาขาล่าสุด คุณสามารถรันคำสั่งต่อไปนี้

git diff master latest

อ่านเพิ่มเติม: 10 ทางเลือก Git ที่ดีที่สุดสำหรับการโฮสต์โปรเจ็กต์โอเพ่นซอร์ส

สรุป

Git ช่วยให้ทีมงานสามารถทำงานร่วมกันโดยใช้ไฟล์เดียวกัน ในขณะที่บันทึกการเปลี่ยนแปลงในไฟล์เมื่อเวลาผ่านไป เพื่อให้พวกเขาสามารถเรียกคืนเวอร์ชันที่ต้องการได้ในภายหลัง

ด้วยวิธีนี้ คุณสามารถใช้ Git เพื่อจัดการซอร์สโค้ด ไฟล์การกำหนดค่า หรือไฟล์ใดๆ ที่จัดเก็บไว้ในคอมพิวเตอร์ได้ คุณอาจต้องการดูเอกสาร Git Online สำหรับเอกสารเพิ่มเติม