ฉันมีสาขาผู้พัฒนาเก่าที่ล้าสมัยไปแล้วอย่างสมบูรณ์ ฉันไม่ต้องการลบ แต่ฉันต้องการแทนที่เนื้อหาทั้งหมดด้วยสาขาหลัก หมายความว่าฉันต้องการ dev_branch = master
ฉันเหนื่อย:
git merge -s ours dev_branch
ไม่ทำงานแม้ว่า ...
ฉันมีสาขาผู้พัฒนาเก่าที่ล้าสมัยไปแล้วอย่างสมบูรณ์ ฉันไม่ต้องการลบ แต่ฉันต้องการแทนที่เนื้อหาทั้งหมดด้วยสาขาหลัก หมายความว่าฉันต้องการ dev_branch = master
ฉันเหนื่อย:
git merge -s ours dev_branch
ไม่ทำงานแม้ว่า ...
คำตอบ:
หากคุณต้องการการเปลี่ยนแปลงทั้งหมดจากmasterในdev_branchแล้ว:
git checkout dev_branch
git reset --hard master
ใช้งานได้เฉพาะเมื่อคนอื่นไม่ได้โคลนที่เก็บ
หากคุณdev_branchผลักรีโมทไปแล้วคุณต้องทำ:
git push --force
เพื่อบังคับให้กดไปที่รีโมท คำเตือน: นี่จะทำลายประวัติศาสตร์ของสาขาสำหรับคนที่โคลนมาก่อน! จากนั้นคนอื่นจะต้องทำgit pull --rebaseต่อdev_branchไปเพื่อให้ได้การเปลี่ยนแปลง
คุณสามารถเปลี่ยนชื่อสาขา dev เป็นสาขาที่เก่าแล้วสร้างสาขาใหม่จากmasterชื่อเดียวกัน:
git branch -m dev_branch old_dev_branch
git branch -m master dev_branch
หรือใช้oursกลยุทธ์ - ไม่แน่ใจว่าทำไมมันไม่เหมาะกับคุณ:
git checkout master
git merge -s ours dev_branch
git checkout dev_branch
git merge master
dev_branchไปที่จุดเริ่มต้น (ถ้ามี) และคุณจะไม่มีmasterสาขาอีกต่อไป