0Pricing
Git & GitHub Professional Workflow · บทเรียน

การรีเบสเทียบกับการผสาน

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

การรีเบสเทียบกับการผสาน เป็นบทเรียน Git & GitHub Professional Workflow ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Git & GitHub Professional Workflow และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Git & GitHub Professional Workflow มีบทเรียนทั้งหมด 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) และปลดล็อคส่วนที่เหลือของคอร์ส Git & GitHub Professional Workflow ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Git & GitHub Professional Workflow มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การรีเบสเทียบกับการผสาน”

เปรียบเทียบการรีเบสกับการผสาน และเรียนรู้ว่าควรใช้แต่ละวิธีเมื่อใดเพื่อให้ได้ประวัติที่สะอาดและเป็นเส้นตรง คุณปฏิบัติ Git & GitHub Professional Workflow ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Git & GitHub Professional Workflow หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Git & GitHub Professional Workflow บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การรีเบสเทียบกับการผสาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Git & GitHub Professional Workflow นี้ได้ไหม

ได้ บทเรียน Git & GitHub Professional Workflow ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เวิร์กโฟลว์สาขาฟีเจอร์
  2. บทนำสู่เวิร์กโฟลว์ Gitflow
  3. การรีเบสเทียบกับการผสาน
  4. การพัฒนาโดยยึดสาขาหลัก
← กลับไปที่ Git & GitHub Professional Workflow