เราใช้คอมไพล์และมีสาขาหลักและสาขานักพัฒนาซอฟต์แวร์ ฉันต้องเพิ่มฟีเจอร์ใหม่แล้วจึงทำการ rebit to master จากนั้นพุช master ไปที่เซิร์ฟเวอร์ CI
ปัญหาคือว่าถ้าฉันมีข้อขัดแย้งระหว่างการรีบูตฉันไม่สามารถผลักดันไปยังสาขานักพัฒนาซอฟต์แวร์ระยะไกลของฉัน (บน Github) หลังจากการรีบูตเสร็จสมบูรณ์จนกว่าฉันจะดึงสาขาระยะไกลของฉัน ทำให้การกระทำที่ซ้ำกัน เมื่อไม่มีความขัดแย้งทำงานตามที่คาดไว้
คำถาม: หลังจากการรีบูตและการแก้ไขข้อขัดแย้งฉันจะซิงค์สาขานักพัฒนาซอฟต์แวร์ในพื้นที่และระยะไกลได้อย่างไรโดยไม่ต้องสร้างการคอมมิทซ้ำ
ติดตั้ง:
// master branch is the main branch
git checkout master
git checkout -b myNewFeature
// I will work on this at work and at home
git push origin myNewFeature
// work work work on myNewFeature
// master branch has been updated and will conflict with myNewFeature
git pull --rebase origin master
// we have conflicts
// solve conflict
git rebase --continue
//repeat until rebase is complete
git push origin myNewFeature
//ERROR
error: failed to push some refs to 'git@github.com:ariklevy/dropLocker.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
// do what git says and pull
git pull origin myNewFeature
git push origin myNewFeature
// Now I have duplicate commits on the remote branch myNewFeature
แก้ไข
ดังนั้นดูเหมือนว่าสิ่งนี้จะทำลายเวิร์กโฟลว์:
ผู้พัฒนา 1 กำลังทำงานบน myNewFeature developer2 กำลังทำงานบน hisNewFeature ทั้งคู่ใช้ต้นแบบเป็นสาขาหลัก
ผู้พัฒนา 2 ผสาน myNewFeature เข้ากับเขา NewFeature
นักพัฒนา 1 rebases แก้ไขข้อขัดแย้งจากนั้นบังคับให้พุชไปยังสาขาระยะไกลสำหรับ myNewFeature
สองสามวันต่อมาผู้พัฒนา 2 รวม myNewFeature เข้ากับเขาคุณสมบัติใหม่อีกครั้ง
สิ่งนี้จะทำให้ผู้พัฒนารายอื่นเกลียดนักพัฒนาหรือไม่?
force
การผลักดัน)
rewriting history
ว่านั่นคือrebase
we
? คุณอยู่ในทีมมากกว่าเพียงแค่คุณหรือไม่they
พูด (คนที่รู้มากกว่าที่ผมทำ)rebase
ว่าถ้าคุณแบ่งปันรหัสของคุณมากกว่าที่คุณไม่ควรใช้ ทำไมคุณไม่ทำgit pull
และgit merge
?