Удалить все и загрузить новую версию

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

Это то, что я получаю сейчас при попытке загрузить.

$ git push origin master
Username for 'https://code.google.com':
Password for 'https://<removed>@code.google.com':
To https://code.google.com/p/<removed>/
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://code.google.com/p/<removed>/'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Ответ 1

1.) Удалить все в папке репозитория

2.) запустите git rm *, чтобы сообщить git удалить все файлы (проверьте с помощью git status, остались ли какие-либо неустановленные файлы)

3.) выполните git commit -a -m "commitmessage" a git push origin master, чтобы удалить все файлы на удаленном сервере git

4.) проверьте, есть ли у вас пустой удаленный репозиторий сейчас

5.) скопируйте все новые файлы в папку локального репозитория

6.) запустите git add *, чтобы сообщить git добавить все новые файлы (отметьте с помощью git status, остались ли какие-либо неустановленные файлы)

7.) совершить и нажать новые файлы

Теперь вы должны иметь версию в удаленном репозитории git.

Ответ 2

Вы не можете нажать, потому что на пульте дистанционного управления есть фиксация, которая не сливается с фиксацией, которую вы пытаетесь нажать. Если вы хотите отменить все изменения, находящиеся в текущем на удаленном компьютере, вы можете сделать что-то вроде этого.

git fetch
git merge -s ours origin/master
git push origin master

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

Ответ 3

Если вы хотите окончательно удалить файлы из удаленного репозитория и ретроспективно, как если бы они не были нажаты в первую очередь, чтобы начать новый, то на основе this answer вы можете сделать следующее

Запустите следующее локально (обратите внимание, что * удаляет каждую папку/файл):

git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch *" -- --all

Теперь пришло время обновить локальные ссылки git, чтобы заставить его забыть всю историю, имевшуюся в этих файлах

rm -rf .git/refs/original/

git reflog expire --expire=now --all

git gc --prune=now

git gc --aggressive --prune=now

Теперь нажмите все изменения в удаленном репозитории с помощью FORCE, чтобы обеспечить, чтобы удаленное репо также удаляло все эти файлы.

git push --all --force

Это очистит удаленный репозиторий, как если бы ни один файл не существовал.