GIT Перезапис гілки з майстром


33

У мене є стара галузь розробників, яка повністю застаріла. Я не хочу його видаляти, але я хочу повністю замінити його вміст на головну гілку. Значить, я хочу dev_branch = master

Я намагався:

git merge -s ours dev_branch

Не працювало, хоча ...

Відповіді:


55

Якщо ви хочете , щоб всі зміни з masterв dev_branch, то:

git checkout dev_branch
git reset --hard master

Це працює лише в тому випадку, якщо інші люди не клонували сховище.

Якщо ви вже dev_branchнатиснули на пульт, ви повинні зробити:

git push --force

Щоб примусити натиснути на пульт. Попередження: Це порушить історію філії для людей, які її клонували раніше! Тоді іншим людям доведеться зробити git pull --rebaseте, dev_branchщоб отримати зміни.


Ви також можете перейменувати гілку розробників на щось старе, а потім зробити нову гілку 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 відділення на місцях.
помічник

Дякую @slhck! Чомусь мою сценічну гілку не оновлювали після звичайного злиття. Постійно говорили, що моя сценічна філія була оновлена. Використання стратегії "наша" вирішило це для мене.
Slick Shinobi

наші вплинули б лише на конфліктні шматки, але він хоче повністю відновити галузь, не лише конфлікти !? (це хоча б те, що мені потрібно зробити, і чому я знайшов цей Q) - я піду для перейменування!
Мартін Мізер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.