Испортил мой репозиторий Git, не могу понять, как правильно синхронизировать - PullRequest
0 голосов
/ 06 октября 2019

Я добавил файл в .gitignore после (ошибочно) попытки зафиксировать / нажать на github. Это не удалось, потому что он был слишком большим. Я сбрасываю на sudo git reset --hard a6563c9 (последняя запись перед запутыванием вернулась с git log --oneline).

Все нормально, но теперь там написано мое branch is up to date with 'origin/master', что не соответствует действительности (я изменил несколько других файлов).

Я не уверен, как это сделать, простоповторно просмотрите все файлы (кроме файлов в .gitignore) в репозитории на предмет изменений, чтобы я мог зафиксировать / отправить все свои изменения.

Я пробовал:

git rm --cached -r .
git reset .

кака также git update-index --really-refresh, git update-index --no-skip-worktree (последний возвращает Ignoring path?)

Ничто из того, что я пробовал, не меняет branch is up to date with 'origin/master' при попытке git push.

PS: Iпозже обнаружил, что я мог бы использовать

git reset --soft HEAD^
git reset filename

, а затем добавить в .gitignore ... Но сейчас уже немного поздно ...

1 Ответ

1 голос
/ 06 октября 2019

Вы получаете сообщение. ветвь актуальна с 'origin / master' , потому что ваша локальная ветвь и удаленная ветвь указывают на один и тот же коммит. Ваш git reset --hard a6563c9 сделал это.

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

git checkout master
git reflog  #find id of your original erroneous commit
git reset --hard <id of original commit>
git reset --soft HEAD^
git reset <large file added by mistake>
git add .gitignore 
git commit
git push

Я рекомендую всегда дважды проверять список файлов, которые вы делаете.

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