Подтвердить что ты не робот

Git: можно сделать ветку в мастер, игнорируя любые конфликты слияния?

У меня есть репозиторий git с одной веткой, помимо мастера. Я хочу сделать эту ветку мастером - полностью переписать мастера. Очевидно, что я мог бы слить, но это приведет к множеству конфликтов, и, похоже, им предстоит большая работа по их решению, когда я знаю, что ВСЕГДА хочу, чтобы файл был из дополнительной ветки, а не из мастера.

Можно ли преобразовать ветвь в master или выполнить слияние и сообщить git, чтобы всегда поддерживать файл из одной ветки над другой?

Спасибо заранее!

4b9b3361

Ответ 1

Вы можете сделать это одним выстрелом с помощью команды reset:

git checkout master
git reset --hard topicBranch

Жесткий reset сделает текущую точку ветвления заданным данным. Это отбросит любые коммиты на мастера, которые еще не находятся в ветке темы; они не будут объединены.

Здесь также применяется одно и то же предупреждение для переустановок: не делайте этого, если вы уже нажимаете главную ветвь на любой репозиторий, совместно используемый другими разработчиками.

Ответ 2

Если вы являетесь единственным разработчиком, обращающимся к этому репозиторию, и он не используется совместно с другими разработчиками, это довольно легко сделать, создав новые ветки. Прежде чем начать, убедитесь, что ваш репозиторий чист (все изменения были проверены в текущей ветке).

Сделайте резервную копию старой ветки мастера:

git checkout master
git branch oldMaster

Удалить старый мастер и создать новый мастер:

git checkout topicBranch
git branch -D master
git branch master

Если хостинг в репозитории на удаленном сервере, вам нужно будет обновить пульт:

git push --force remoteName master:master

ВАЖНО: Если другие разработчики вытаскивают из вашего репозитория, этот метод будет генерировать ошибки для них в следующий раз, когда они выйдут из вашего репо или вы нажмете на их репо.

Ответ 3

Я все еще не эксперт в git, но похоже, что вы хотите rebase:

git checkout branch_name
git rebase master
git checkout master

Похоже, что это автоматически сгенерирует все изменения в вашем хозяине в точке, где вы разветвляетесь от мастера, а затем повторно применяйте текущие изменения к master ontop этих изменений (так что вам не придется объединять).

Конечно, если вы просто хотите полностью перезаписать мастера, я думаю, вы должны просто нажать эту ветку на главный репозиторий, если вы используете параметр force. Что-то вроде этого:

git push --force origin branch_name

Затем ваш пульт будет иметь все изменения от вашего ветки в главной ветки, и вы можете вытащить его обратно...

git checkout master
git pull --force origin