it-roy-ru.com

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

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

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

Дистанционное репо находится на развёртывании.

35
ericgr

Вы можете удалить ветку и воссоздать ее, скажем, ветвь, которую вы хотите перезаписать, это 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. :)

48
Kjuly

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

  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

4
a20

Я не эксперт в экосистеме GitHub, но почему вы не можете просто сбросить URL вашего удаленного репозитория? 

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

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

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

0
Simple-Solution