ใช้ได้กับ Eclipse Luna + Eclipse Git 3.6.1
ผม,
- ที่เก็บ git ที่โคลน
- ทำการเปลี่ยนแปลงบางอย่างในซอร์สโค้ด
- การเปลี่ยนแปลงขั้นตอนจาก Git Staging View
- ในที่สุดก็กระทำและผลักดัน!
และฉันประสบปัญหานี้กับ EGit และนี่คือวิธีแก้ไข ..
ใช่มีคนทำการเปลี่ยนแปลงก่อนที่ฉันจะยอมรับการเปลี่ยนแปลงของฉัน ดังนั้นการเปลี่ยนแปลงจึงถูกปฏิเสธ หลังจากเกิดข้อผิดพลาดนี้การเปลี่ยนแปลงจะถูกส่งไปยังที่เก็บในเครื่อง ฉันไม่ต้องการเพียงแค่Pullการเปลี่ยนแปลงเพราะฉันต้องการรักษาlinear historyตามที่ระบุไว้ - ในกรณีใดบ้างที่อาจเป็นอันตราย
ดังนั้นฉันจึงทำตามขั้นตอนต่อไปนี้
- จากมุมมอง Git Repository ให้คลิกขวาที่
โครงการGit ที่เกี่ยวข้อง
- เลือก
Fetch from Upstream- มันดึงการอัปเดตระยะไกล (การอ้างอิงและวัตถุ) แต่ไม่มีการอัปเดตภายในเครื่อง สำหรับข้อมูลเพิ่มเติมโปรดดูความแตกต่างระหว่าง 'git pull' และ 'git fetch'?
- เลือก
Rebase...- เปิดป๊อปอัปคลิกPreserve merges during rebaseดูว่าทำไม
"rebase --preserve-merges" ของ git ทำอะไรกันแน่ (และทำไม?)
- คลิกที่
Rebase button
- ถ้ามี / มี
conflict(s)ไปที่ขั้นตอนที่ 6 อื่น ๆ ขั้นตอนที่ 11
Rebase Resultป๊อปอัพจะปรากฏเพียงคลิกที่OK
file comparator จะเปิดขึ้นคุณต้องแก้ไข left side fileจะเปิดขึ้นคุณจำเป็นต้องปรับเปลี่ยน
- เมื่อคุณดำเนินการรวมการเปลี่ยนแปลงอย่างถูกต้องแล้วให้ไปที่
Git Stagingมุมมอง
stage the changes. กล่าวคือadd to index
- ในมุมมองเดียวกันให้คลิกที่
Rebase->Continue ->ทำซ้ำ 7 ถึง 10 จนกว่าข้อขัดแย้งทั้งหมดจะได้รับการแก้ไข
- จาก
Historyมุมมองเลือกแถวการคอมมิตของคุณแล้วเลือกPush Commit
- เลือก
Rebase Commits of local.......ช่องทำเครื่องหมายแล้วคลิกถัดไป อ้างถึงเหตุผล - Git: rebase ไปยังสาขาการพัฒนาจากต้นน้ำ
- คลิกที่
Finish
หมายเหตุ:หากคุณมีการคอมมิตที่เก็บในเครื่องหลายรายการคุณต้องรวมคอมมิตไว้ในคอมมิตเดียวเพื่อหลีกเลี่ยงการผสานหลายรายการ