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