13

Есть у меня проект. Находится в папке project. Инициализирую Git, создаю новую ветку:

git init
git add .
git commit -m 'first commit'
git branch feature
// делаю что-то для feature

Что имею? Две ветки. Одна — master. Другая — feature. Они отличаются. Я изменил некоторые файлы в папке project (пока работал в ветке feature). Но тут мне очень понадобилось взглянуть на файлы, которые в master.

Как сделать так, чтобы в папке project находились не те файлы, над которыми я сейчас работаю feature, а те, что были в ветке master?

Nick Volynkin
  • 34,094
imkost
  • 153
  • 1
    как вариант - спрятать изменения "git stash", перейти на другую ветку, взглянуть на то, что было нужно, перейти обратно и вытащить изменения обратно "git stash pop" – zippp Sep 08 '15 at 11:34

1 Answers1

34

Если у вас уже есть ветка feature, то после коммита в нее сделайте git checkout master – это переключит текущую ветку на master.

Пока вы не вкоммитили изменения, вы не можете переключиться на другую ветку. Выхода два: вкоммитить изменения или отложить их. Второе можно сделать с помощью git stash – это добавит текущие незакоммиченные изменения в стек изменений и сбросит текущую рабочую копию до HEAD'а репозитория. Далее вы сможете:

  • git stash list: показать все изменения в стеке
  • git stash show: показать последнее изменение в стеке (патч)
  • git stash apply: применить последнее изменение из стека к текущей рабочей копии
  • git stash drop: удалить последнее изменение в стеке
  • git stash pop: применить последнее изменение из стека к текущей рабочей копии и удалить его из стека
  • git stash clear: очистить стек изменений
eigenein
  • 3,807
  • Также вместо stash можно использовать обычный commit (а потом откатить его) - это позволит "привязать" сохраненные изменения к ветке. Еще есть такой механизм как worktree для самых тяжелых случаев. – Pavel Mayorov Jul 19 '17 at 12:26