ฉันใช้ที่เก็บ Git ระดับกลางเพื่อมิเรอร์ที่เก็บ SVN ระยะไกลซึ่งผู้คนสามารถโคลนและทำงานได้ พื้นที่เก็บข้อมูลระดับกลางมีสาขาหลักที่ปรับใหม่ทุกคืนจาก SVN ต้นน้ำและเรากำลังดำเนินการเกี่ยวกับสาขาคุณลักษณะ ตัวอย่างเช่น:
remote:
master
local:
master
feature
ฉันสามารถผลักสาขาคุณลักษณะกลับไปที่รีโมตได้สำเร็จและจบลงด้วยสิ่งที่ฉันคาดหวัง:
remote:
master
feature
local:
master
feature
จากนั้นฉันตั้งค่าสาขาใหม่เพื่อติดตามรีโมท:
remote:
master
feature
local:
master
feature -> origin/feature
และทั้งหมดเป็นอย่างดี สิ่งที่ฉันต้องการจะทำต่อจากนี้คือการปรับฐานสาขาฟีเจอร์ใหม่เป็นสาขาหลักบนรีโมท แต่ฉันต้องการทำสิ่งนี้จากเครื่องในพื้นที่ของฉัน ฉันต้องการที่จะทำ:
git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
เพื่อให้สาขาของคุณสมบัติระยะไกลเป็นปัจจุบันกับรีโมตมาสเตอร์ อย่างไรก็ตามวิธีนี้ทำให้ Git บ่น:
To <remote>
! [rejected] feature -> feature (non-fast-forward)
error: failed to push some refs to '<remote>'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
git pull
ใช้กลอุบาย แต่ทำให้เกิดการผสานที่ฉันต้องการหลีกเลี่ยง ฉันกังวลว่าข้อความfeature -> feature
จะระบุมากกว่าfeature -> origin/feature
แต่นี่อาจเป็นเพียงการนำเสนอ
ฉันพลาดอะไรไปหรือไปเกี่ยวกับเรื่องนี้ผิดทาง? ไม่สำคัญที่จะหลีกเลี่ยงการทำ rebase บนเซิร์ฟเวอร์ระยะไกล แต่จะทำให้การแก้ไขข้อขัดแย้งในการผสานจาก rebase ทำได้ยากขึ้นมาก