Как я могу выбрать перезаписать удаленный репозиторий локальными коммитами? - PullRequest
35 голосов
/ 05 декабря 2011

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

Однако я, похоже, не могу этого сделать.Самое близкое, что я могу получить - это тянуть и слиться, но тогда оно хочет провести меня через какой-то запутанный процесс слияния.Я не хочу сливаться.Я хочу перезаписать.Мне не нужна новая ветка - по сути, я просто хочу начать все сначала.

Удаленное репо находится в режиме разворота.

Ответы [ 4 ]

50 голосов
/ 05 декабря 2011

Вы можете удалить ветвь и воссоздать ее, скажем, ветвь, которую вы хотите перезаписать, это dev:

Удалить ветку на вашем удаленном хосте (github)

git push origin :dev  

Тогда просто нажмите своего разработчика снова:

git push origin dev

Я использую Github для хостинга, не знакомый с unuddle, но я думаю, что он будет работать и для unuddle. :)


Так же, как упоминалось @melee, вы также можете использовать

git push origin dev -f

(не уверен, действителен ли -f, но --force в порядке)

git push origin dev --force

принудительно перезаписать ветку. Я помню, я делал это раньше. Спасибо @ melee. :)

4 голосов
/ 05 сентября 2016

Как это сделать для главной ветки, не извлекая данные из удаленного репо:

  1. Создание новой папки, инициализация Git, добавление удаленного репо - не тяните и не выбирайте!

    mkdir clean_repo

    git init

    git remote add origin <remote-repo>

  2. создать (и переключиться на) пустую локальную ветвь, добавить, зафиксировать и вставить в нее тестовый файл.

    git checkout test

    echo "test" > test

    git add .

    git commit -m "adding test"

    git push origin:test

  3. В github / bitbucket измените ветку по умолчанию на новую ветвь

  4. В локальном режиме переключиться на основную ветку, зафиксировать и передать в удаленное хранилище / ветку

    git checkout -b master

    git push origin --mirror

0 голосов
/ 07 мая 2019

Имеет ту же проблему. Эта команда работала для меня.

git push --set-upstream origin master --force
0 голосов
/ 27 июня 2017

Я не эксперт в экосистеме github, но почему вы не можете просто сбросить URL удаленного хранилища?

git remote set-url origin /path/to/your/new/remote/repository/url

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

, чтобы узнать больше о git remote..., пожалуйста, посмотрите здесь .

...