กวดวิชา Git ขั้นสูง

กวดวิชา Git ขั้นสูง

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





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





สาขากิตติ์

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





สร้างสาขา Git

ในการสร้างสาขา Git ให้ใช้:

git branch branch_name

เปลี่ยนเป็นสาขา Git

ใช้ เช็คเอาท์ เพื่อเปลี่ยนเป็นสาขา Git:



git checkout branch_name

หลังจากเปลี่ยนเป็นสาขาแล้ว คุณสามารถสเตจการเปลี่ยนแปลงได้โดยใช้ git เพิ่ม --all . จากนั้นคอมมิตพวกเขาโดยใช้ git commit -m 'commit name' สั่งการ.

เปรียบเทียบสาขากับอาจารย์

ใช้ git diff สั่งการ:





git diff master..branch_name

วิธีเปรียบเทียบไฟล์เฉพาะ:

git diff master..testb -- main.html

การเปรียบเทียบสองสาขาจะคล้ายกับวิธีที่คุณเปรียบเทียบสาขากับต้นแบบ:





git diff branch1..branch2

หากต้องการดูความแตกต่างในไฟล์เฉพาะระหว่างสองสาขา:

git diff branch1..branch2 -- main.html

ผลักดันการเปลี่ยนแปลงไปยังสาขาระยะไกล

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

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

จากนั้นคุณสามารถผลักดันการเปลี่ยนแปลงเหล่านั้นไปยังรุ่นระยะไกลของสาขาได้:

git push origin changes

รวมสาขาระยะไกลกับมาสเตอร์โดยใช้คำขอดึง

ดังนั้นโปรแกรมเมอร์คนอื่นจึงตรวจสอบการเปลี่ยนแปลงในสาขาระยะไกล ( การเปลี่ยนแปลง ). แต่คุณต้องการรวมเข้ากับมาสเตอร์แบรนช์และผลักดันให้ใช้งานได้จริง

โปรดจำไว้ว่าสาขาระยะไกลของคุณสืบทอดชื่อสาขา Git ในพื้นที่ของคุณ ( การเปลี่ยนแปลง ). วิธีผสานการเปลี่ยนแปลงมีดังนี้

เปลี่ยนเป็นสาขาหลัก:

git checkout master

ดึงต้นทางหรือ HEAD ของกิ่ง ( การเปลี่ยนแปลง ) เพื่อรวมเข้ากับสาขาหลัก:

git pull origin changes

ส่งการผสานนี้สดไปยังสาขาหลัก:

git push origin master

ใช้ Git Merge แทน

เพื่อรวมสาขากับต้นแบบโดยใช้ ไป สั่งการ:

ย้ายไปยังสาขาหลัก:

git checkout master

รวมเข้ากับสาขา ( การเปลี่ยนแปลง ):

git merge changes

จากนั้นผลักการผสานสดไปยังสาขาหลัก:

ทำไมคอมพิวเตอร์ของฉันถึงใช้ 100 ดิสก์
git push origin master

ตรวจสอบให้แน่ใจว่าคุณเปลี่ยน การเปลี่ยนแปลง ด้วยชื่อสาขาของคุณ

เมื่อการผสานสำเร็จ คุณก็ทำได้ ลบสาขาในเครื่องและจากระยะไกล ถ้าคุณไม่ต้องการมันอีกต่อไป:

ที่เกี่ยวข้อง: วิธีเปลี่ยนชื่อสาขาใน Git

Git Rebase

หากคุณมีหลายสาขาที่มีการคอมมิตที่ล้าสมัย คุณสามารถรีเบสหรือโฟกัสใหม่ได้ หัวหน้า/ผู้อ้างอิง ของสาขาเหล่านั้นเพื่อสืบทอด หัวหน้า/ผู้อ้างอิง ของการปรับปรุงอย่างใดอย่างหนึ่ง

การรีเบสจึงมีประโยชน์เมื่อคุณต้องการอัปเดตบางสาขาด้วยฐานของสาขาปัจจุบัน

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

ตัวอย่างเช่น สมมติว่าคุณมีสองสาขา สาขา1 และสาขา2 ตอนนี้ คุณไม่ได้ทำการเปลี่ยนแปลงใดๆ กับ branch1 มาระยะหนึ่งแล้ว แต่คุณยอมรับการเปลี่ยนแปลงกับ branch2 อย่างสม่ำเสมอ รวมถึงเมื่อเร็วๆ นี้ด้วย

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

นี่คือวิธีที่คุณสามารถทำได้:

เปลี่ยนเป็นสาขาร้าง (สาขา 1):

git checkout branch1

จากนั้นทำการรีเบส branch1 เป็น branch2 ที่อัพเดต:

git rebase branch2

Git Squash

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

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

วิธีที่ดีที่สุดในการสควอชคอมมิตคือการใช้โหมดรีเบสแบบโต้ตอบ ดูตัวอย่างด้านล่างเพื่อทำความเข้าใจสิ่งนี้ให้ดีขึ้น

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

วิ่ง git reflog เพื่อดูรหัสแฮชของการคอมมิตของคุณ:

git reflog

นี่คือผลลัพธ์ในกรณีนี้:

ตอนนี้เป้าหมายของคุณคือสควอชห้าคอมมิชชันสุดท้าย เริ่มด้วย แก้ไขครั้งแรก จนถึง การแก้ไขที่ห้า .

ในการทำเช่นนั้น ให้คัดลอกโค้ดแฮชของคอมมิตด้านล่าง แก้ไขครั้งแรก ( 0a83962 ). แล้วกด NS ที่จะออกจาก reflog .

ตอนนี้วิ่ง git rebase -- โต้ตอบ บนแฮชนั้น

git rebase --interactive 0a83962

Git จะเปิดไฟล์ rebase แบบโต้ตอบที่มีลักษณะดังนี้:

เพื่อสควอชคอมมิชชัน ยกเว้น แก้ไขครั้งแรก , แทนที่ เลือก กับ NS สำหรับการกระทำของกันและกัน:

บันทึกและปิดไฟล์นี้

ไฟล์อื่นจะเปิดขึ้นเพื่อให้คุณเปลี่ยนชื่อการคอมมิตที่บีบอัด:

ฉันจะหาการ์ดจอที่ฉันมี windows 10 ได้อย่างไร

ทำความสะอาดสิ่งเหล่านั้นและพิมพ์ชื่อที่ต้องการสำหรับการคอมมิตที่บีบอัด:

บันทึกไฟล์นั้น จากนั้นปิดและคุณควรได้รับข้อความแสดงความสำเร็จในเทอร์มินัลของคุณ

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

ในการทำเช่นนั้น ให้เปิดบรรทัดคำสั่งของคุณและเรียกใช้:

git config --global core.editor ''path to choice text editor' -n -w'

Git Fork กับ Git Clone

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

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

นี่คือวิธีการ โคลนที่เก็บระยะไกล บน GitHub และเริ่มการดาวน์โหลดไปยังไดเร็กทอรีท้องถิ่นของคุณ:

git clone https://github.com/username/repository_name.git/

กู้คืนไฟล์เป็นสถานะเริ่มต้น

หากคุณต้องการล้างการเปลี่ยนแปลงในไฟล์หลังจากการคอมมิตครั้งสุดท้าย คุณสามารถใช้คำสั่ง git restore สั่งการ:

git restore filename

แก้ไขคำมั่นสัญญา

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

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

git add file_forgotten
git commit --amend

Unstage ไฟล์

คุณสามารถลบไฟล์เฉพาะที่คุณจัดฉากสำหรับการคอมมิตโดยใช้ ไป rm สั่งการ:

git rm --cached filename

คุณยังสามารถลบหลายไฟล์พร้อมกันได้:

git rm --cached file1 file2 file3 file4

อย่าลืมผนวกนามสกุลไฟล์ที่เกี่ยวข้องต่อท้ายไฟล์ที่คุณยกเว้น ตัวอย่างเช่น ไฟล์ข้อความธรรมดาควรเป็น ชื่อไฟล์.txt .

ที่เกี่ยวข้อง: วิธีทำความสะอาด Git และลบไฟล์ที่ไม่ได้ติดตาม

Git รีเซ็ต

โดยใช้ git reset จะมีประโยชน์ถ้าคุณต้องการวางไฟล์ทั้งหมดที่คุณจัดฉากไว้สำหรับการคอมมิตในครั้งเดียว:

git reset

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

git reset --soft HEAD~1

แทนที่ --อ่อนนุ่ม กับ --แข็ง หากคุณได้ผลักดันการคอมมิตปัจจุบันแล้ว:

git reset --hard HEAD~1

ย้อนกลับ

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

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

วิธีเปลี่ยนกลับเป็นการคอมมิต:

git revert HEAD~1

ที่ไหน หัว~1 ชี้ไปที่การคอมมิตเฉพาะในแผนผังการทำงานของคุณ

ลบไฟล์ที่ติดตามหรือไดเรกทอรี

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

ในการลบไฟล์ที่จัดฉาก:

git rm -f filename

ในการลบโฟลเดอร์แบบแบ่งขั้น:

git rm -r -f foldername

Git Logging

ในการดูบันทึกการคอมมิตและประวัติของคุณใน Git:

git log

เพื่อบันทึกกิจกรรมในสาขาเฉพาะ:

git log branch_name

ที่เกี่ยวข้อง: วิธีตรวจสอบประวัติโครงการด้วย git log

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

git reflog

ในการดูบันทึกการอ้างอิงสำหรับสาขาเฉพาะ:

git reflog branch_name

จัดการเวอร์ชันโปรเจ็กต์ของคุณอย่างมืออาชีพด้วย Git

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

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

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

โปรแกรมเมอร์ได้สร้างระบบควบคุมเวอร์ชัน (VCS) เพื่อแก้ปัญหาการควบคุมเวอร์ชันไฟล์ มาดูพื้นฐานของการควบคุมเวอร์ชันโดยใช้ระบบชั้นนำในปัจจุบัน Git

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • การเขียนโปรแกรม
  • การพัฒนาเว็บ
  • GitHub
  • บทเรียนการเข้ารหัส
เกี่ยวกับผู้เขียน อิดิโซ โอมิโซลา(94 บทความที่ตีพิมพ์)

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

เพิ่มเติมจาก Idowu Omisola

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก