การเลือกคอมมิตด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การแก้ไขข้อขัดแย้งจากการผสานด้วยตนเอง
- การรีเบสแบบโต้ตอบเพื่อจัดการประวัติ
- การเลือกคอมมิตด้วย Cherry-pick
- การใช้ Git Rerere เพื่อนำการแก้ข้อขัดแย้งกลับมาใช้ใหม่