Как я могу сохранить свои изменения и вернуться к моей последней регистрации в Git?

#git #git-stash

#git #git-stash

Вопрос:

История выглядит так:

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

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

Ответ №1:

Вы можете сохранить это (используя git stash ), и в этом случае ваш рабочий каталог будет сброшен до вашей последней проверки (т. Е. в вашу ГОЛОВУ).

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

Комментарии:

1. итак, когда я захожу в git branch newbranch — он скопирует все изменения в эту ветку, затем git checkout originalbranch, я возвращаюсь к последней проверке?

2. @cvista: git branch просто создает ветку. Это ничего не фиксирует. Если вы хотите сохранить свои изменения, вам нужно создать и проверить эту новую ветку, а затем зафиксировать ее: git checkout -b newbranch; git add ...; git commit . Затем вы можете безопасно переключиться на другую ветку.

Ответ №2:

Я предлагаю быстро перенести вашу работу в другую ветку:

 git stash
git checkout -b new-branch-name
git stash apply
git commit -a -m "commit message here"
git checkout current-branch-name
  

Вы могли бы сделать только git stash часть, но тогда ваши материалы навсегда останутся в монолитном стеке stash. Лучше поместить это куда-нибудь, где вы сможете найти это снова, так как вам понадобится очередь хранения для других вещей позже.

Комментарии:

1. блестяще 🙂 оба верны, хотя … arrr [почему мы не можем отметить более одного ответа как правильные?!]

2. Тайник здесь совершенно не нужен. Создание и проверка ветки при текущей фиксации всегда будут успешными. И что еще хуже, вы упустили важный шаг: перед обратным переключением ветвей должно быть git commit !

3. Да, ты абсолютно прав — я действительно пропустил фиксацию. Исправлено. Я также согласен, что в тайнике обычно нет необходимости, но я также сталкивался с некоторыми странными крайними случаями, когда это может иметь значение, и, поскольку это вряд ли повредит, я оставлю его.