Есть три варианта:
Сначала - если вы хотите уничтожить все следы истории master
, вы можете просто установить master
на dev
- аналогично ответам @Krantisinh и @ashishmohite:
git branch -f master dev
Если другие люди опирались на старое состояние master
, они облажались. Поэтому поговорите с ними, прежде чем сделать это.
Второе - вы хотите сохранить историю мастера, но обменяться содержимым: Затем вы делаете специальное слияние, подобное этому:
git checkout master
# git merge -s theirs simulation
git merge -s ours dev
git branch temp_THEIRS
git reset --hard dev
git reset --soft temp_THEIRS
git commit --amend
git branch -D temp_THEIRS
Это объединяет dev
в master
, но принимает все содержимое из dev
- без конфликтов - без вопросов. Это исходит от https://stackoverflow.com/a/56368650/947357.
Третий - (согласно комментарию), если вы хотите выбросить master
(как в «Первом»), но также начинать master
без какой-либо истории:
git checkout --orphan new-master
git commit -m "start from scratch again"
git branch --force -M new-master master
После этого dev
и master
не делятся историей.