คำถามติดแท็ก git-cherry-pick


25
จะเลือกผสานหรือรับการเปลี่ยนแปลงจากสาขาอื่นใน Git ได้อย่างไร?
ฉันใช้คอมไพล์ในโครงการใหม่ที่มีสองขนานกัน แต่ปัจจุบันกำลังทำการทดลอง - สาขาการพัฒนา: master: นำเข้า codebase ที่มีอยู่บวกกับ mods เล็กน้อยที่โดยทั่วไปฉันแน่ใจ exp1: สาขาทดลอง # 1 exp2: สาขาทดลอง # 2 exp1และexp2เป็นตัวแทนของสองแนวทางสถาปัตยกรรมที่แตกต่างกันมาก จนกว่าฉันจะไปได้ไกลกว่านั้นฉันก็ไม่รู้ว่าจะใช้อันไหน (ถ้ามี) เมื่อฉันก้าวหน้าในสาขาหนึ่งบางครั้งฉันก็มีการแก้ไขที่จะเป็นประโยชน์ในสาขาอื่นและต้องการที่จะรวมเฉพาะที่ วิธีที่ดีที่สุดในการรวมการเปลี่ยนแปลงแบบเลือกจากสาขาการพัฒนาหนึ่งไปยังอีกสาขาหนึ่งคืออะไรในขณะที่ทิ้งทุกอย่างอื่นไว้ แนวทางที่ฉันได้พิจารณา: git merge --no-commit ตามด้วย unstaging ด้วยตนเองของการแก้ไขจำนวนมากที่ฉันไม่ต้องการทำร่วมกันระหว่างสาขา การคัดลอกไฟล์ทั่วไปด้วยตนเองไปยังไดเรกทอรีชั่วคราวแล้วgit checkoutย้ายไปที่สาขาอื่นจากนั้นคัดลอกออกจากไดเรกทอรีชั่วคราวด้วยตนเองไปยังแผนผังการทำงาน ความแปรปรวนด้านบน ยกเลิกexpสาขาในตอนนี้และใช้ที่เก็บข้อมูลเพิ่มเติมในพื้นที่สองแห่งสำหรับการทดลอง ทำให้การคัดลอกไฟล์ด้วยตนเองทำได้ง่ายขึ้น ทั้งสามวิธีการเหล่านี้ดูเหมือนน่าเบื่อและผิดพลาดได้ง่าย ฉันหวังว่าจะมีวิธีการที่ดีกว่า สิ่งที่คล้ายกับพารามิเตอร์พา ธ ตัวกรองที่จะทำให้git-mergeเลือกได้มากกว่า

8
วิธีเชอร์รี่เลือกช่วงของความมุ่งมั่นและรวมเข้ากับสาขาอื่นได้อย่างไร
ฉันมีเลย์เอาต์ที่เก็บต่อไปนี้: สาขาหลัก (การผลิต) บูรณาการ การทำงาน สิ่งที่ฉันต้องการบรรลุคือการเลือกเชอร์รี่ที่หลากหลายจากสาขาการทำงานและรวมเข้ากับสาขาการรวม ฉันค่อนข้างใหม่กับคอมไพล์และฉันไม่สามารถหาวิธีการทำเช่นนี้ได้อย่างแน่นอน (การเลือกช่วงเชอร์รี่ของการกระทำในการดำเนินการหนึ่งไม่ใช่การรวม) โดยไม่ทำให้ที่เก็บข้อมูลสับสน คำแนะนำหรือความคิดเกี่ยวกับเรื่องนี้? ขอบคุณ!

7
ส่วนหนึ่งการเก็บผลเชอร์รี่กับ Git
ผมทำงานใน 2 สาขาที่แตกต่างกัน: การเปิดตัวและการพัฒนา ฉันสังเกตเห็นว่าฉันยังคงต้องรวมการเปลี่ยนแปลงบางอย่างที่มุ่งมั่นในการเปิดสาขากลับเข้าไปในสาขา การพัฒนา ปัญหาคือฉันไม่ต้องการความมุ่งมั่นทั้งหมดเพียงบาง hunks ในบางไฟล์ดังนั้นง่าย git cherry-pick bc66559 ไม่ได้ทำเคล็ดลับ เมื่อฉันทำ git show bc66559 ฉันเห็นความแตกต่าง แต่ไม่รู้วิธีที่ดีในการนำส่วนนั้นไปใช้กับแผนผังการทำงานปัจจุบันของฉัน

4
ยกเลิกการคอมไพล์เชอร์รี่เลือกหรือไม่
ฉันวิ่งgit cherry-pick <hash>และมีการรวมความขัดแย้ง ฉันไม่ต้องการแก้ไขข้อขัดแย้งฉันแค่ต้องการยกเลิกการคัดเชอร์รี่ เมื่อทำผสานจริง (กับgit merge) git merge --abortมีประโยชน์ อะไรที่เทียบเท่ากับการเก็บเชอร์รี่?

3
ผสานกับความมุ่งมั่นเฉพาะ
ฉันสร้างสาขาใหม่ชื่อnewbranchจากmasterสาขาในคอมไพล์ ตอนนี้ผมได้ทำการทำงานบางอย่างและต้องการที่จะผสานnewbranchไปmaster; แต่ผมได้ทำการเปลี่ยนแปลงบางอย่างเพื่อเสริมnewbranchและฉันต้องการที่จะรวมถึงที่สี่จากที่ผ่านมามอบให้newbranchmaster ฉันใช้cherry-pickแต่มันแสดงข้อความให้ใช้ตัวเลือกที่เหมาะสม: git checkout master git cherry-pick ^^^^HEAD newbranch ฉันสามารถใช้คอมไพล์mergeเพื่อทำแทนได้หรือไม่? git merge newbranch <commitid>

1
วิธีเลือกเชอร์รี่จาก 1 สาขาไปยังสาขาอื่น
ฉันมี 2 สาขาmasterและdev. ฉันอยู่ในdevสาขาและฉันต้องการเชอร์รี่เลือก 1 จากกระทำการmaster devดังนั้นฉันทำ $ git cherry-pick be530cec7748e037c665bd5a585e6d9ce11bc8ad Finished one cherry-pick. แต่เมื่อฉันทำgit statusและgitxฉันไม่เห็นความมุ่งมั่นของฉันbe530cec7748e037c665bd5a585e6d9ce11bc8adในประวัติศาสตร์คอมไพล์ ฉันจะเห็นความมุ่งมั่นของฉันในdevสาขาได้อย่างไร?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.