Переключение ветки после прерывания текущих изменений в git - PullRequest
40 голосов
/ 18 сентября 2011

Я клонировал git-репо, а затем начал играть в его основной ветке. Через некоторое время я хочу игнорировать только что сделанные изменения (без их фиксации) и переключиться на другую ветку. Однако, это мешает мне переключиться, потому что есть незафиксированные изменения. Как я могу игнорировать их, не пряча их тоже? Вот что происходит:

$ git checkout gh-pages
error: Your local changes to the following files would be overwritten by checkout:
        somefile.txt
Please, commit your changes or stash them before you can switch branches.
Aborting

Ответы [ 7 ]

65 голосов
/ 18 сентября 2011

Вариант 1

git checkout -f gh-pages

Вариант 2

git reset --hard     # beware: don't make that a habit
git checkout gh-pages
12 голосов
/ 30 ноября 2015

Просто для полноты и для тех, кто приземлился здесь в результате поиска: хотя ОП специально запрашивает решение без сохранения , стоит упомянуть, что тайник действительно очень хороший вариант:

Команда сохраняет ваши локальные изменения и возвращает рабочий каталог в соответствие с коммитом HEAD.

Так что вы можете просто

git stash

Этокак сброс в ГОЛОВУ.Будучи абсолютно уверенным в том, что эти незафиксированные изменения действительно бесполезны, просто

git stash drop

Вы можете даже иметь несколько тайников и т. Д., Как указано в ссылке на документацию выше.

Я бы порекомендовал эту практикутак как он заставляет задуматься дважды перед перезагрузкой без значительных затрат.

5 голосов
/ 18 сентября 2011

Вы можете игнорировать все незафиксированные изменения.

git reset --hard HEAD

3 голосов
/ 22 сентября 2014

Если у вас есть неподготовленный файл, попробуйте:

git checkout -- .

или

git checkout -- filename
3 голосов
/ 18 сентября 2011

Если вы действительно уверены, что хотите отбросить свои незафиксированные изменения (т. Е. Те, которые находятся в стадии подготовки, а также те, которые находятся в вашем рабочем дереве), вы можете сделать:

git reset --hard

В общем, тайнинг часто безопаснее

0 голосов
/ 23 февраля 2017

Вы можете отменить изменения, сделанные в определенном файле:

git checkout somefile.txt

, а затем плавно перейти к ветви:

git checkout gh-pages
0 голосов
/ 19 января 2017

git add -A git stash

это очистит все сделанные вами изменения (только те, которые не зафиксированы)

...