ใช้ได้กับ 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
หมายเหตุ:หากคุณมีการคอมมิตที่เก็บในเครื่องหลายรายการคุณต้องรวมคอมมิตไว้ในคอมมิตเดียวเพื่อหลีกเลี่ยงการผสานหลายรายการ