#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. Да, ты абсолютно прав — я действительно пропустил фиксацию. Исправлено. Я также согласен, что в тайнике обычно нет необходимости, но я также сталкивался с некоторыми странными крайними случаями, когда это может иметь значение, и, поскольку это вряд ли повредит, я оставлю его.