การรีเบสเทียบกับการผสาน
เปรียบเทียบการรีเบสกับการผสาน และเรียนรู้ว่าควรใช้แต่ละวิธีเมื่อใดเพื่อให้ได้ประวัติที่สะอาดและเป็นเส้นตรง
การรีเบสเทียบกับการผสาน เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
ผสานหรือจัดฐานใหม่: ทางเลือก
เมื่อทำงานกับ Git คุณมักพบว่าสาขาของคุณแยกออกจากอีกสาขาหนึ่ง เช่น สาขา feature แยกออกจาก main
คุณจะนำการเปลี่ยนแปลงเหล่านั้นมารวมกันได้อย่างไรครับ Git มีกลยุทธ์หลักสองแบบ ได้แก่ การผสานและการจัดฐานใหม่ ทั้งสองแบบสามารถรวมการเปลี่ยนแปลงได้ แต่ดำเนินการด้วยวิธีที่แตกต่างกันโดยพื้นฐาน จึงทำให้ประวัติโครงการแตกต่างกัน
การผสาน: รวมประวัติ
การผสานเป็นวิธีเริ่มต้นของ Git สำหรับรวมการเปลี่ยนแปลง เมื่อคุณผสานสาขาหนึ่งเข้ากับอีกสาขา Git จะนำเนื้อหาจากสาขาต้นทางมารวมกับสาขาเป้าหมาย
ลักษณะสำคัญของการผสานคือการสร้างคอมมิตการผสานใหม่ คอมมิตนี้มีคอมมิตแม่สองรายการ ซึ่งแสดงอย่างชัดเจนว่าประวัติที่แยกออกจากกันสองสายถูกนำมารวมกัน และยังคงรักษาประวัติเดิมของทั้งสองสาขาไว้อย่างครบถ้วน
การดำเนินการผสานใน Git
มาดูตัวอย่างการผสานแบบง่ายกันครับ เราจะสร้างสาขา feature เพิ่มคอมมิตหนึ่งรายการ แล้วผสานกลับเข้าไปใน main
git init my_merge_project
cd my_merge_project
echo "Initial content" > file.txt
git add .
git commit -m "Initial commit"
git branch feature
git checkout feature
echo "Feature A" >> feature.txt
git add .
git commit -m "Add feature A"
git checkout main
echo "Main update" >> main.txt
git add .
git commit -m "Update main"
git merge feature
git log --oneline --graphการผสาน: ข้อดีและข้อเสีย
การผสานทำได้ตรงไปตรงมาและปลอดภัยสำหรับสาขาที่ใช้ร่วมกัน แต่ประวัติอาจดู 'ยุ่งเหยิง' ได้
- ข้อดี:
- รักษาประวัติคอมมิตไว้อย่างครบถ้วน
- ไม่ทำลายข้อมูล และไม่เขียนทับคอมมิตเดิม
- ใช้งานและทำความเข้าใจได้ง่าย
- ข้อเสีย:
- อาจทำให้ประวัติ 'มีเสียงรบกวน' จากคอมมิตการผสานจำนวนมาก
- แผนภาพอาจดูซับซ้อนเมื่อมีหลายสาขาผสานเข้ามา
การจัดฐานใหม่: เขียนประวัติใหม่
การจัดฐานใหม่เป็นทางเลือกแทนการผสาน โดยรวมการเปลี่ยนแปลงด้วยการย้ายหรือรวมลำดับคอมมิตไปยังคอมมิตฐานใหม่ แทนที่จะสร้างคอมมิตการผสาน วิธีนี้จะเขียนประวัติโครงการใหม่
โดยพื้นฐานแล้ว คอมมิตของสาขาฟีเจอร์จะถูก 'เล่นซ้ำ' บนคอมมิตล่าสุดของสาขาเป้าหมาย ทำให้ดูเหมือนว่าคุณเริ่มงานจากจุดนั้น วิธีนี้สร้างประวัติแบบเส้นตรงโดยไม่มีคอมมิตการผสานเพิ่มเติม
การดำเนินการจัดฐานใหม่ใน Git
คราวนี้ลองใช้สถานการณ์เดิมกับการจัดฐานใหม่กันครับ เราจะจัดฐานสาขา feature ใหม่บน main
สังเกตว่าคอมมิตของสาขา feature ถูกนำไปใช้ใหม่บนคอมมิตล่าสุดของ main จากนั้นการผสานแบบเลื่อนไปข้างหน้าอย่างรวดเร็วจะทำให้ main ชี้ไปยังคอมมิตนั้น
git init my_rebase_project
cd my_rebase_project
echo "Initial content" > file.txt
git add .
git commit -m "Initial commit"
git branch feature
git checkout feature
echo "Feature B" >> feature.txt
git add .
git commit -m "Add feature B"
git checkout main
echo "Main update 2" >> main.txt
git add .
git commit -m "Update main 2"
git checkout feature
git rebase main
git checkout main
git merge feature
git log --oneline --graphการจัดฐานใหม่: ข้อดีและข้อเสีย
การจัดฐานใหม่สร้างประวัติที่สะอาด แต่มีคำเตือนสำคัญเกี่ยวกับสาขาที่ใช้ร่วมกัน
- ข้อดี:
- สร้างประวัติโครงการที่สะอาดและเป็นเส้นตรง
- ทำให้เลื่อนดูและทำความเข้าใจประวัติคอมมิตได้ง่ายขึ้น
- สามารถจัดระเบียบคอมมิต (รวมคอมมิตหรือเปลี่ยนลำดับ) ก่อนผสานได้
- ข้อเสีย:
- เขียนประวัติคอมมิตใหม่
- อาจเป็นอันตรายหากใช้กับคอมมิตที่ถูกส่งไปยังคลังระยะไกลส่วนกลาง (สาธารณะ) แล้ว
ผสานเทียบกับจัดฐานใหม่: เปรียบเทียบ
สรุปความแตกต่างหลักอย่างรวดเร็วมีดังนี้
- การผสาน:
- สร้างคอมมิตการผสานใหม่
- รักษาประวัติทั้งหมดไว้อย่างครบถ้วนและตรงตามเดิม
- ไม่ทำลายข้อมูล
- แผนภาพอาจซับซ้อน
- การจัดฐานใหม่:
- เขียนประวัติใหม่โดยไม่มีคอมมิตการผสาน
- ได้ประวัติแบบเส้นตรง
- เป็นการเปลี่ยนแปลงแบบทำลายข้อมูล (เปลี่ยนรหัสคอมมิต)
- แผนภาพดูสะอาดมาก
การเลือกกลยุทธ์
แล้วควรเลือกใช้แบบใดเมื่อไรครับ
- ใช้การผสานเมื่อ:
- ทำงานกับสาขาสาธารณะหรือสาขาที่ใช้ร่วมกัน (เช่น
main,develop) - ต้องการรักษาประวัติโครงการไว้อย่างครบถ้วนและตรงตามเดิม
- ต้องการแสดงอย่างชัดเจนว่าประวัติที่แยกออกจากกันถูกรวมเข้าด้วยกันเมื่อใด
- ใช้การจัดฐานใหม่เมื่อ:
- ทำงานบนสาขาฟีเจอร์ส่วนตัวก่อนส่งการเปลี่ยนแปลง
- ต้องการประวัติที่สะอาดและเป็นเส้นตรง
- ต้องการจัดระเบียบคอมมิตของสาขาฟีเจอร์ (เช่น รวมคอมมิตหรือเปลี่ยนลำดับ) ก่อนผสาน
กฎทองคำ: ห้ามจัดฐานใหม่ให้กับคอมมิตที่ส่งไปยังคลังระยะไกลที่ใช้ร่วมกันแล้วโดยเด็ดขาด การจัดฐานใหม่ให้กับประวัติที่ใช้ร่วมกันอาจสร้างปัญหาใหญ่ให้ผู้ร่วมงานได้
ตรวจสอบความเข้าใจ: ผสานหรือจัดฐานใหม่
ลองพิจารณาคุณสมบัติของกลยุทธ์หลักสองแบบสำหรับการรวมการเปลี่ยนแปลงใน Git กันครับ
ทบทวน: ผสานเทียบกับจัดฐานใหม่
ในบทเรียนนี้ เราได้สำรวจวิธีพื้นฐานสองแบบของ Git สำหรับรวมการเปลี่ยนแปลง ได้แก่ การผสานและการจัดฐานใหม่
- การผสานรวมประวัติเข้าด้วยกันด้วยคอมมิตการผสานใหม่ โดยรักษาคอมมิตเดิมทั้งหมดไว้
- การจัดฐานใหม่เขียนประวัติใหม่และสร้างลำดับแบบเส้นตรงด้วยการย้ายคอมมิต
เลือกใช้ให้เหมาะสมกับกระบวนการทำงานของทีม และจำกฎทองคำไว้ว่า ห้ามจัดฐานใหม่ให้กับประวัติสาธารณะ ความเข้าใจนี้สำคัญต่อการรักษากระบวนการทำงาน Git ที่สะอาดและเอื้อต่อการทำงานร่วมกัน
คำถามที่พบบ่อย
บทเรียน “การรีเบสเทียบกับการผสาน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การรีเบสเทียบกับการผสาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การรีเบสเทียบกับการผสาน”
เปรียบเทียบการรีเบสกับการผสาน และเรียนรู้ว่าควรใช้แต่ละวิธีเมื่อใดเพื่อให้ได้ประวัติที่สะอาดและเป็นเส้นตรง คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การรีเบสเทียบกับการผสาน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เวิร์กโฟลว์สาขาฟีเจอร์
- บทนำสู่เวิร์กโฟลว์ Gitflow
- การรีเบสเทียบกับการผสาน
- การพัฒนาโดยยึดสาขาหลัก