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

การเลือกคอมมิตด้วย Cherry-pick

ทำความเข้าใจวิธีเลือกใช้คอมมิตแต่ละรายการจากสาขาหนึ่งไปยังอีกสาขาโดยใช้ `git cherry-pick`

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

ย้ายการคอมมิตบางรายการอย่างเจาะจง

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

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

ควรใช้ Cherry-Pick เมื่อใด

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

นี่เป็นสถานการณ์ที่เหมาะอย่างยิ่งสำหรับ cherry-pick เพราะช่วยย้ายการเปลี่ยนแปลงที่แยกออกมาได้ โดยไม่นำงานที่ไม่เกี่ยวข้องมาด้วย

คำสั่งพื้นฐาน

คำสั่งพื้นฐานนั้นเรียบง่าย: git cherry-pick <commit-hash>

  • ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณอยู่บนสาขาที่ต้องการนำการคอมมิตไปใช้
  • จากนั้น คุณต้องมีตัวระบุเฉพาะ (แฮช) ของการคอมมิตที่ต้องการเลือก
  • Git จะสร้างการคอมมิตรายการใหม่ที่มีการเปลี่ยนแปลงเดียวกันบนสาขาปัจจุบันของคุณ
git cherry-pick <commit-hash>

ค้นหาแฮชของการคอมมิต

หากต้องการใช้ cherry-pick คุณต้องมีแฮช! คุณค้นหาแฮชได้โดยใช้ git log

ตัวเลือก --oneline มีประโยชน์อย่างมากสำหรับการดูข้อมูลแบบกระชับ:

git log --oneline

เตรียมสถานการณ์สำหรับ Cherry-Pick

มาสร้างสถานการณ์อย่างง่ายกัน เราจะสร้างสาขา main และสาขา feature/login จากนั้นสร้างการคอมมิตบน feature/login ที่ต้องการนำมาใช้กับ main

เราต้องการนำการคอมมิต "HOTFIX" มาใช้กับ main

git init my_project
cd my_project
echo "Initial content" > file.txt
git add file.txt
git commit -m "Initial commit"
git branch feature/login
git checkout feature/login
echo "Login feature added" >> login.txt
git add login.txt
git commit -m "Add basic login feature"
echo "Fix: Login button style" >> style.css
git add style.css
git commit -m "HOTFIX: Fix login button styling"

ดำเนินการ Cherry-Pick

ตอนนี้ให้สลับกลับไปยังสาขา main และนำการคอมมิต "HOTFIX" มาใช้ สมมติว่าแฮชของ "HOTFIX: Fix login button styling" คือ abcdefg

หลังจากเรียกใช้คำสั่งนี้ จะมีการคอมมิตรายการใหม่ปรากฏบนสาขา main ของคุณ โดยมีการเปลี่ยนแปลงเดียวกับ abcdefg ใช้ git log --oneline เพื่อดูการคอมมิตนั้น!

git checkout main
git cherry-pick abcdefg

จัดการข้อขัดแย้งของ Cherry-Pick

เช่นเดียวกับการผสาน การใช้ cherry-pick อาจทำให้เกิดข้อขัดแย้ง หากบรรทัดโค้ดเดียวกันถูกเปลี่ยนแปลงแตกต่างกันในประวัติทั้งสองฝั่ง

  • Git จะหยุดการดำเนินการชั่วคราวและทำเครื่องหมายไฟล์ที่มีข้อขัดแย้ง
  • แก้ไขข้อขัดแย้งในไฟล์ด้วยตนเอง
  • ใช้ git add กับไฟล์ที่แก้ไขข้อขัดแย้งแล้ว
  • ดำเนินการให้เสร็จด้วย git cherry-pick --continue
# After resolving conflicts in editor:
git add .
git cherry-pick --continue

เลือกการคอมมิตหลายรายการ

คุณสามารถใช้ cherry-pick กับการคอมมิตมากกว่าหนึ่งรายการในครั้งเดียวได้

หากต้องการเลือกช่วงของการคอมมิต (ตั้งแต่ hashA จนถึงก่อน hashB):

git cherry-pick hashA..hashB

ควรใช้เมื่อใด (และไม่ควรใช้เมื่อใด)

Cherry-pick เป็นเครื่องมือที่ทรงพลัง แต่ควรใช้อย่างรอบคอบ

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

ตรวจสอบอย่างรวดเร็ว: จุดประสงค์ของ Cherry-Pick

คุณมีการคอมมิตบนสาขา feature/new-design ที่แก้ไขปัญหารูปแบบสำคัญ คุณต้องการนำการแก้ไขนี้ไปใช้กับสาขา main ทันที โดยไม่ผสานสาขาฟีเจอร์ทั้งหมด

ทบทวน: การเปลี่ยนแปลงแบบเจาะจง

ในบทเรียนนี้ เราได้เรียนรู้เกี่ยวกับ git cherry-pick ซึ่งเป็นคำสั่งที่มีประโยชน์สำหรับนำการคอมมิตที่เจาะจงไปใช้กับสาขาปัจจุบันของคุณ

  • คำสั่งนี้สร้างการคอมมิตรายการใหม่ที่มีการเปลี่ยนแปลงเดียวกันบนสาขาเป้าหมาย
  • เหมาะอย่างยิ่งสำหรับการแก้ไขเร่งด่วนหรือการย้ายการเปลี่ยนแปลงที่แยกออกมา
  • คุณต้องมีแฮชของการคอมมิต ซึ่งโดยทั่วไปค้นหาได้ด้วย git log --oneline
  • เตรียมพร้อมสำหรับการแก้ไขข้อขัดแย้งเช่นเดียวกับการผสาน

การเชี่ยวชาญ cherry-pick ช่วยให้คุณควบคุมประวัติโครงการได้อย่างแม่นยำ!

คำถามที่พบบ่อย

บทเรียน “การเลือกคอมมิตด้วย Cherry-pick” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเลือกคอมมิตด้วย Cherry-pick” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Git & GitHub Professional Workflow ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Git & GitHub Professional Workflow มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเลือกคอมมิตด้วย Cherry-pick”

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

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

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

บทเรียน “การเลือกคอมมิตด้วย Cherry-pick” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การแก้ไขข้อขัดแย้งจากการผสานด้วยตนเอง
  2. การรีเบสแบบโต้ตอบเพื่อจัดการประวัติ
  3. การเลือกคอมมิตด้วย Cherry-pick
  4. การใช้ Git Rerere เพื่อนำการแก้ข้อขัดแย้งกลับมาใช้ใหม่
← กลับไปที่ Git & GitHub Professional Workflow