Невозможно нажать на пустое репо в github - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь отправить свой локальный репозиторий в репозиторий github, но, похоже, он не работает.Я следовал инструкциям здесь , и я думаю, что все выглядело хорошо до последнего шага:

git push origin master

[удаленный отклонен] master -> master (крюк предварительного получения отклонен)

Изначально у меня было 2 проблемы (по крайней мере), так как у меня также был огромный файл в папке (превышающий ограничение 100 МБ), наложенный github.В любом случае, я подумал, что удалил огромный файл с помощью:

git rm -r --cached model/
git commit -m "Object Detection v0.1"

Я не мог видеть большую папку, используя:

git ls-tree --full-tree -r HEAD

, поэтому я догадался, что, должно быть, удалил его.

Мой удаленный репозиторий пуст.Я проверил этот ответ , но по какой-то причине самый популярный (не принятый) ответ относится к gitlab вместо github.И я не смог найти подходящих настроек для github и не смог расшифровать принятый ответ.

Итак, мои вопросы: как я могу перенести локальное репо в мое удаленное репо (у меня есть удаленное репо)?Кроме того, почему я все еще вижу сообщения об ошибках в огромном файле (я предположил), который я удалил?Есть ли какие-либо другие действия, которые я должен выполнить, чтобы добиться этого?

Редактировать:

Чтобы ответить, почему вопрос здесь не является моим дубликатом (или наоборот в любом случае):
У меня есть репо, поэтому я не могу ни с кем связаться (как это было предложено в принятом ответе), и проблема была не на стороне сервера, поскольку мне действительно удалось запустить репо без огромного файла.

Моя ситуация была довольно простой (мои коммиты фактически не содержали никаких реальных изменений) и в основном обошла мою проблему, создав новый локальный репозиторий, но это действительно полезный ответ @ Tim.

1 Ответ

0 голосов
/ 28 сентября 2018

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

git reset --hard HEAD~1                     # remove latest commit
git rm -r --cached model/                   # remove large folder
git commit --amend 'Object Detection v0.1'  # rewrite initial commit

Это предполагает, что у вас был только один начальный коммит, кроме коммитаВы показали нам выше, который пытался удалить большую папку.Если у вас было несколько коммитов, вам придется переписывать историю, используя интерактивную перебазировку (git rebase -i), или возможно использовать filter-branch.

Редактировать: На основании ваших комментариев у вас есть несколько коммитов.Затем вы можете попробовать сделать интерактивную перебазировку:

git rebase -i --root

Это должно вызвать редактор в bash, показывающий вам список, похожий на следующий:

pick d93jk8f first commit message
pick 2k9vn3d second commit message
pick ekmv098 third commit message
pick f93kl2k fourth commit message

Коммит долженбыть в списке самых старых, самых новых, сверху вниз.Теперь измените pick на edit, для каждый коммит.Чтобы войти в режим редактирования, введите SHIFT + I .

edit d93jk8f first commit message
edit 2k9vn3d second commit message
edit ekmv098 third commit message
edit f93kl2k fourth commit message

Теперь выйдите и сохраните: ESC , а затем : wq!

Это должно начать перебазирование.Git теперь повторно применяет всех ваших коммитов и будет останавливаться при каждом коммите.При каждой паузе вы должны удалять большую папку, предполагая, что она была там в тот момент:

git rm -r --cached model/

Затем git add изменить, зафиксировать, а затем сделать git rebase --continue, чтобы продолжить перебазирование.После завершения всего процесса эту большую папку следует полностью удалить из вашей истории.

Обратите внимание, что я выполняю ребазинг, начиная с самого первого коммита.Например, если вы знаете, что большой файл был зафиксирован всего три коммита назад, то вы могли бы начать перебазирование с помощью:

git rebase -i HEAD~3

. Это позволит вам переписать только историю, возвращаясь к трем коммитам.Но в данном случае кажется разумным начать с первого коммита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...