Удалить все и загрузить новую версию
Мы используем 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
Это очистит удаленный репозиторий, как если бы ни один файл не существовал.