Git checkout ничего не меняет

Мне очень нравится git. По крайней мере, мне нравится идея git. Возможность проверить свой главный проект как отдельную ветку, где я могу изменить все, что захочу, без риска испортить все остальное - это здорово. Но это не работает.

В основном, мой рабочий процесс выглядит следующим образом:

  1. Оформить стабильную версию в новую ветку, чтобы поэкспериментировать с новым кодом
  2. Внесите кучу изменений - я не собираюсь сохранять что-либо из этого, Я просто экспериментирую.
  3. Посмотрите, что я изменил.
  4. Добавьте все изменения, которые нужно отслеживать.
  5. Зафиксируйте ветку и отправьте ветку в начало координат (если это сработало, в противном случае пропустите этот шаг)
  6. Решите попробовать другой метод, вернитесь к мастеру
  7. Наблюдайте за артефактами из экспериментальной ветки, в которой я работал, даже если я нахожусь в основной ветке.

Каждый раз, когда я проверяю перейти в другую ветку, внести изменения в одну ветку, а затем проверить исходную ветку, у меня все еще есть все файлы и изменения, которые произошли в другой ветке. Это очень расстраивает. Я читал, что это может произойти, когда у вас есть файлы, открытые в IDE при этом, но я был довольно осторожен с этим, и оба закрыли файлы в IDE, закрыли IDE и выключили мой сервер rails перед переключением ветки, и это до сих пор происходит. Кроме того, запуск git clean -f либо удаляет все, что произошло после некоторой произвольной фиксации (причем случайным образом), либо, как в последнем случае, ничего не менял обратно в исходное состояние.

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

git checkout -b photo_tagging
git branch # to make sure it's right
# make a bunch of changes, creations, etc
git status # see what's changed since before
git add . # approve of the changes, I guess, since if I do git commit after this, it says no changes
git commit -m 'these are changes I made'

git checkout master
git branch #=> *master

# look at files, tags_controller is still there, added in photo_tagging
# and code added in photo_tagging branch are still there in *master

Похоже, это произойдет вне зависимости от того, делаю ли я коммит в ветке или нет.

41
задан Rob W 18 December 2011 в 15:07
поделиться