Ответ 1
git reset --hard origin/master
удалит все коммиты не в origin/master
, где origin
- это имя репо, а master
- имя ветки.
Я работал над чем-то, и решил, что он был полностью ввернут... после того, как он совершил некоторые из них. Поэтому я попробовал следующую последовательность:
git reset --hard
git rebase origin
git fetch
git pull
git checkout
В какой момент я получил сообщение
Your branch is ahead of 'origin/master' by 2 commits.
Я хочу отменить мои локальные коммиты, не удаляя свой локальный каталог и не перезагружая все. Как я могу это сделать?
git reset --hard origin/master
удалит все коммиты не в origin/master
, где origin
- это имя репо, а master
- имя ветки.
Как и в стороне, помимо ответа mipadi (который должен работать, кстати), вы должны знать, что:
git branch -D master
git checkout master
также делает именно то, что вы хотите, без having to redownload everything
(ваша цитата перефразирована). Это связано с тем, что в вашем локальном репо содержится копия удаленного репо (и эта копия не совпадает с вашим локальным каталогом, это не то же самое, что и выбранная ветка).
Удаление ветки совершенно безопасно и восстановление этой ветки очень быстро и не связано с сетевым трафиком. Помните, что git - это, прежде всего, локальное репо по дизайну. У других удаленных веток есть копия на локальном. Там только немного метаданных, которые сообщают git, что конкретная локальная копия на самом деле является удаленной ветвью. В git все файлы находятся на вашем жестком диске все время.
Вам нужно запустить
git fetch
Чтобы получить все изменения, а затем вы не получите сообщение с "ваша ветка впереди".
Я видел случаи, когда удаленный пользователь не синхронизировался и нуждался в обновлении. Если a reset --hard
или branch -D
не работают, попробуйте
git pull origin
git reset --hard
Мне пришлось сделать:
git checkout -b master
как git сказал, что он не существует, потому что он был очищен с помощью
git -D master
Что я делаю, я стараюсь, чтобы reset был тяжелым для HEAD. Это уничтожит все локальные коммиты:
git reset --hard HEAD^