ฉันมีสาขาผู้พัฒนาเก่าที่ล้าสมัยไปแล้วอย่างสมบูรณ์ ฉันไม่ต้องการลบ แต่ฉันต้องการแทนที่เนื้อหาทั้งหมดด้วยสาขาหลัก หมายความว่าฉันต้องการ 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
สาขาอีกต่อไป