Подтвердить что ты не робот

Переключение ветки после отмены текущих изменений в git

Я клонировал репо 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
4b9b3361

Ответ 1

Вариант 1

git checkout -f gh-pages

Вариант 2

git reset --hard     # beware: don't make that a habit
git checkout gh-pages

Ответ 2

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

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

Итак, вы можете просто

git stash

Это похоже на сброс в HEAD. Если быть абсолютно уверенным, что действительно эти незафиксированные изменения бесполезны, просто

git stash drop

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

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

Ответ 3

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

git reset --hard HEAD

Ответ 4

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

git reset --hard

В общем, скрепление часто безопаснее

Ответ 5

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

git checkout -- .

или

git checkout -- filename

Ответ 6

git add -A git stash

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

Ответ 7

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

git checkout somefile.txt

И затем плавно переходим к ветке:

git checkout gh-pages