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

Как переписать, а не объединить одну удаленную ветвь в другую ветку?

У меня две ветки. Стадии и бета-версии. В нем есть код (включая файлы), который я вообще не хочу. Как я могу заставить Beta полностью перезаписать Staging, так что ни один из этих файлов или кода не будет объединен с Staging into Beta.

Я вижу, что некоторые люди рекомендуют это делать:

git checkout staging
git merge -s ours beta

Но я не считаю, что ранее существовавшие файлы были бы "конфликтом кода" и поэтому не будут удалены. Я ошибаюсь? Если я прав, как бы я это сделал?

4b9b3361

Ответ 1

Вы можете просто удалить staging и воссоздать его на основе beta:

git branch -D staging
git checkout beta
git branch staging

Ответ 2

Если вам не все равно о старой истории staging, вы можете просто воссоздать ее:

git checkout beta
git branch -f staging

Если вы заботитесь о старой истории staging, тогда все становится веселее:

git checkout staging        # First, merge beta into staging so we have
git merge -s theirs beta    # a merge commit to work with.

git checkout beta           # Then, flip back to beta version of the files

git reset --soft staging    # Then we go back to the merge commit SHA, but keep 
                            # the actual files and index as they were in beta

git commit --amend          # Finally, update the merge commit to match the
                            # files and index as they were in beta.

Ответ 3

Я предлагаю вам просто переименовать его, если вы передумаете.

git branch -m staging staging_oops
git checkout beta
git branch staging

Если вы действительно не можете иметь эту дополнительную ветку вокруг:

git branch -D staging_oops

Ответ 4

Если история постановки не будет проблемой, вы можете просто сделать это.

git checkout staging 
git reset --hard beta

Просто запомните, что история постановки исчезнет после вышеупомянутой команды и > будет работать с вашей ветвью бета.