ความรู้เบื้องต้นเกี่ยวกับ Git

เผยแพร่แล้ว: 2022-06-30

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

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

การควบคุมเวอร์ชันคืออะไร?

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

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

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

Git คืออะไร?

Git เป็นระบบควบคุมเวอร์ชัน แต่ไม่ใช่ระบบเดียว ที่เก็บ WordPress หลักทำงานผ่าน SVN แม้ว่าคุณจะสามารถค้นหาสำเนา Git ได้เช่นกัน นอกจากนี้ยังมี Mercurial, Visual Source Safe, VESTA และตัวเลือกอื่นๆ อีกมากมาย

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

ข้อกำหนดและคำสั่งพื้นฐานของ Git

ก่อนที่เราจะเจาะลึกกลศาสตร์ของวิธีใช้ Git เราต้องเข้าใจคำศัพท์สองสามคำก่อน เราจะครอบคลุมเฉพาะข้อกำหนดที่คุณจะพบเป็นประจำเท่านั้น

สำหรับรายการที่สมบูรณ์ยิ่งขึ้นของทุกสิ่งที่คุณอาจพบดูที่นี้ การอ้างอิง Git หรือสิ่งนี้ รายการคำสั่ง Git ทั้งหมด

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

สาขา : สาขาคือเวอร์ชันของพื้นที่เก็บข้อมูลของคุณที่แตกต่างจากโครงการหลัก ที่เก็บทั้งหมดมาพร้อมกับสาขาหลักหรือในโปรเจ็กต์ที่เก่ากว่าคือมาสเตอร์แบรนช์ เมื่อเร็ว ๆ นี้ Git และ Github ได้เริ่มเปลี่ยนชื่อสาขาเริ่มต้นจาก master เป็น main เนื่องจากปัญหาทางประวัติศาสตร์ของคำว่า master Git 2.28 ยังอนุญาตให้คุณตั้งชื่อสาขาเริ่มต้นสำหรับโครงการใหม่ใดๆ

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

Clone : คำสั่ง git clone ใช้เพื่อสร้างสำเนาของที่เก็บจากที่เก็บต้นทาง คุณต้องใช้คำสั่งนี้เพื่อรับสำเนาของที่เก็บระยะไกลในเครื่อง เพื่อให้คุณสามารถทำงานกับโค้ดได้

Commit : เมื่อคุณใช้ git add แล้ว คุณต้องใช้ git commit เพื่อให้สามารถบันทึกสถานะของไฟล์ของคุณใน git ได้

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

ผสาน : เมื่อคุณได้ทำการเปลี่ยนแปลงในสาขาหนึ่งและเพิ่มและยืนยันแล้ว คุณจะใช้คำสั่ง git merge เพื่อย้ายการเปลี่ยนแปลงเหล่านั้นไปยังสาขาอื่น

ที่ มา : นี่คือชื่อเริ่มต้นสำหรับเวอร์ชันหลักของที่เก็บ ฉันมักจะเปลี่ยนของฉันให้มีความหมายมากกว่าต้นกำเนิด ถ้าฉันทำงานกับ Github ฉันจะเปลี่ยนการตั้งค่าใน Git เพื่อให้ Origin กลายเป็น Github นี้ช่วยให้ฉันเก็บสิ่งที่ชัดเจนในหัวของฉัน

พุช : อัพเดตรีโมตแบรนช์ด้วยคอมมิตที่ทำขึ้นในเวอร์ชันโลคัลของที่เก็บของคุณ

พื้นที่เก็บข้อมูล : สิ่งนี้อาจเรียกว่า “Repo” และเป็นไดเร็กทอรีของไฟล์ทั้งหมด และประวัติ Git ของการเปลี่ยนแปลงไฟล์เหล่านั้น

สถานะ : สถานะ git status แสดงสถานะปัจจุบันของที่เก็บที่ทำงานของคุณ

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

โฮสติ้งที่เก็บ Git

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

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

การติดตั้ง Git

บน macOS วิธีที่ง่ายที่สุดในการติดตั้ง git คือเปิด Terminal แล้วพิมพ์ git ซึ่งจะแจ้งให้คุณดาวน์โหลดเครื่องมือ Xcode Command Line เพื่อติดตั้ง git เมื่อเสร็จแล้ว คุณสามารถรัน git –version เพื่อดูว่าคุณมี git เวอร์ชันใด หากไม่ได้ผล มีวิธีอื่นๆ ในการติดตั้ง git บน macOS

สำหรับผู้ใช้ Windows คุณสามารถติดตั้ง Git ด้วยตัวติดตั้ง Git อย่างเป็นทางการ Git ยังมาพร้อมกับแอปพลิเคชัน Github Desktop ซึ่งเราจะพูดถึงในภายหลัง

หากคุณใช้ Linux ควรรวม git ไว้กับตัวจัดการแพ็คเกจของคุณ หรือคุณสามารถดูวิธีการติดตั้ง git บน Linux เหล่านี้ได้

การกำหนดค่า Git Defaults

เมื่อคุณติดตั้ง Git แล้ว คุณต้องกำหนดค่าเพื่อให้แต่ละคอมมิตใช้ชื่อและอีเมลของคุณ และส่งข้อความเพื่อใช้ตัวแก้ไขที่คุณต้องการเพื่อป้อนความคิดเห็นที่มาพร้อมกับคอมมิต เราจะดูวิธีตั้งค่าเหล่านี้ใน macOS ผ่านแอปพลิเคชัน Terminal

git config --global user.name "Your Name" จะตั้งชื่อที่ไปพร้อมกับทุกคอมมิตที่ทำบนคอมพิวเตอร์ของคุณ

git config --global user.email "[email protected]" จะตั้งค่าที่อยู่อีเมลที่เชื่อมโยงกับทุกคอมมิตที่คุณทำ

git config --global core.editor vim จะทำให้ตัวแก้ไขเริ่มต้นสำหรับ Git vim ถึงฉันจะชอบ vim แต่ก็ไม่ใช่บรรณาธิการที่ทุกคนชอบ หากคุณใช้ Atom คุณจะต้องใช้ git config –global core.editor “atom –wait” หรือ git config –global core.editor “subl -n -w” สำหรับ Sublime Text

หากคุณใช้ IDE แล้ว Visual Studio Code ยังให้คุณทำงานกับ Git ได้โดยตรงจากภายในแอปพลิเคชัน หากคุณต้องการเช่นเดียว กับ PHPStorm

การสร้างที่เก็บ

ตอนนี้เราได้ติดตั้งและกำหนดค่า git แล้ว มาเริ่มที่เก็บข้อมูลพื้นฐานกัน เปิด Terminal ของคุณและสร้างโฟลเดอร์ชื่อ test-repository โดยพิมพ์ mkdir test-repository จากนั้นพิมพ์ cd test-repository เพื่อเปลี่ยนเป็นไดเร็กทอรี test-repository แล้วพิมพ์ git init

ณ จุดนี้ คุณจะมีไดเร็กทอรีที่ซ่อนอยู่ในโฟลเดอร์ชื่อ .git เนื่องจากเป็นไฟล์ที่ซ่อนอยู่ คุณจะต้องพิมพ์ ls -a ใน Terminal เพื่อแสดงรายการไฟล์ที่ซ่อนอยู่

การใช้ git add

ตอนนี้ มาสร้างไฟล์โดยพิมพ์ touch test.txt ลงใน Terminal พิมพ์ git status ถัดไปเพื่อดูไฟล์ที่คุณเพิ่งเพิ่ม

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

พิมพ์ git add test.txt เพื่อบอกให้ Git จัดการไฟล์นี้ จากนั้นพิมพ์ git status อีกครั้ง และ Git ควรบอกคุณว่ารู้เกี่ยวกับไฟล์ที่เปลี่ยนแปลง

การคอมมิตไฟล์ไปยัง Git

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

git commit -m 'adding our first file'

แฟล็ก -m บอก git ว่าคำที่อยู่ในเครื่องหมายคำพูดเดี่ยวคือความคิดเห็นที่ไปพร้อมกับคำสั่ง

ตอนนี้ที่เก็บของเรามีไฟล์เดียวในนั้นพร้อมสถานะที่บันทึกไว้

สร้างสาขา

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

ในการสร้างสาขา เราสามารถพิมพ์ git checkout -b new-branch นี่คือช็อตคัทเพื่อสร้างแบรนช์พร้อมๆ กับที่เราเช็คเอาต์สาขา และนี่คือสิ่งที่ฉันใช้ทุกครั้งที่ต้องการสร้างแบรนช์

ตอนนี้เปิดไฟล์ test.txt ของเรา เพิ่มข้อความและบันทึก จากนั้นใช้ git add และ git commit ด้านบนเพื่อบันทึกสถานะของไฟล์

ถัดไป พิมพ์ git checkout master เพื่อเปลี่ยนกลับไปเป็นสาขาหลักเริ่มต้น จากนั้นดูเนื้อหาของไฟล์ test.txt อีกครั้ง คุณจะสังเกตเห็นว่าข้อความทั้งหมดที่คุณพิมพ์ถูกลบไปแล้ว Git จะลบไฟล์ใหม่ที่อยู่บนสาขาเดียวเท่านั้น แม้ว่าจะเก็บบันทึกเอาไว้เพื่อไม่ให้หายไป

รวมสาขา

ตอนนี้ เราชอบทุกอย่างที่เราเขียนในไฟล์ของเรา ดังนั้นมารวมเข้ากับสาขาหลักของเรา ตรวจสอบให้แน่ใจว่าคุณอยู่ในสาขาหลักและพิมพ์ git merge new-branch เพื่อรวมการเปลี่ยนแปลงของคุณ

หากคุณดูเนื้อหาของ test.txt ตอนนี้ คุณจะพบว่าการเปลี่ยนแปลงของคุณบนแบรนช์หลักเหมือนกับที่คุณปล่อยไว้

การใช้ Git กับ WordPress

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

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

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

หากฉันจัดการเวิร์กโฟลว์การปรับใช้ทั้งหมด ฉันจะทำให้โฟลเดอร์รูท WordPress เป็นตำแหน่งหลักสำหรับที่เก็บ Git ของฉัน จากนั้นฉันต้องแน่ใจว่าได้เพิ่ม wp-content/uploads และ wp-config.php ลงในไฟล์ .gitignore ของฉัน wp-config.php เป็นไฟล์เฉพาะสำหรับการติดตั้ง WordPress แต่ละครั้ง ดังนั้นฉันจึงไม่ต้องการให้มันใช้งานกับไฟล์เวอร์ชันอื่นซึ่งจะทำให้ไซต์หยุดทำงาน

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

แอปพลิเคชั่น Git GUI

แม้ว่าเราจะอธิบายพื้นฐานต่างๆ ผ่านบรรทัดคำสั่งสำหรับ Git แล้ว แต่ก็ไม่ใช่ทุกคนที่คุ้นเคยกับบรรทัดคำสั่ง ฉันรู้ว่าฉันไม่ใช่เมื่อเริ่มใช้ Git แม้กระทั่งตอนนี้ บางครั้งฉันต้องการดูภาพแทนสิ่งที่ Git กำลังทำ ก่อนที่ฉันจะทำการเปลี่ยนแปลงใดๆ กับการตั้งค่าของฉัน

โชคดีที่มีไคลเอนต์ GUI ที่ยอดเยี่ยมหลายตัวสำหรับ Git ที่คุณสามารถใช้ได้

Github Desktop (Windows/macOS)

จุดที่ดีในการเริ่มต้นเมื่อคุณดูไคลเอ็นต์ Git GUI คือแอปพลิเคชัน Github Desktop

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

หากคุณไม่แน่ใจว่าคำขอดึงคืออะไร ให้ดูที่ เอกสารของ Github เกี่ยวกับคำขอดึง

น่าเสียดายสำหรับผู้ใช้ Linux ไม่มีแอปพลิเคชัน Github Desktop อย่างเป็นทางการ แต่มี Github Desktop ทางแยกที่จะติดตั้งบนระบบ Linux

Git ทาวเวอร์ (Windows/macOS)

Git GUI ที่ฉันใช้คือ Git Tower Git Tower พร้อมใช้งานสำหรับ macOS และ Windows เมื่อฉันเริ่มต้นใช้งาน Git ฉันพบว่ามันง่ายกว่าในการแก้ไขข้อขัดแย้ง และดูว่าไฟล์ต่างๆ ภายใน GUI นี้มีความแตกต่างกันอย่างไร

สำเนาการทำงาน (iOS/iPadOS)

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

ห่อ

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

  • เอกสาร Git
  • หนังสือ Pro Git
  • Laracasts Git บทเรียน
  • แหล่งข้อมูลภายนอกของ Git

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