Git слился без меня, спрашивая? Зачем? - PullRequest
3 голосов
/ 20 августа 2011

Я работал над мастером, закончил то, что мне нужно было сделать, затем сделал

git commit -am "message".

Я хотел опробовать написание новой функции, поэтому я сделал:

git branch NewFeature

затем

git checkout NewFeature

Затем я внес изменения в файлы с контролем версий, вернулся в git и сделал

git checkout master

Что я забыл сделать, это зафиксировать эти изменения в ветке NewFeature.Да, я виноват, но, оглядываясь по сторонам, кажется, что это могло произойти без флага -f.К сожалению, это просто слило мои изменения с мастером.Естественно, я взбесился и сделал

git reset --hard head

Кажется, что я потерял всю работу, которую я проделал в ветке NewFeature, когда я снова переключился!Что я сделал не так?

Ответы [ 2 ]

6 голосов
/ 20 августа 2011

Это нормальное поведение.

Если у вас нет конфликтующих изменений между ветвями, git просто "перемещает" изменения при оформлении заказа.Git должен показать вам сводку перемещенных файлов после извлечения.

Выполнение git reset --hard HEAD отменит ваши изменения.

Дополнительная информация

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

  • git stash
  • git checkout <branch>
  • Внесите изменения исовершить
  • git checkout <oldBranch>
  • git stash pop для снятия тайника
0 голосов
/ 20 августа 2011

Возможно, вы захотите посмотреть на 'git reflog', чтобы узнать состояние веток, чтобы восстановить ваши изменения.

Но, как вы заметили, git reset --hard - это операция, которая изменяет рабочее дерево, как указано на странице руководства:

       --hard
           Resets the index and working tree. Any changes to tracked files
           in the working tree since <commit> are discarded.

Я написал больше об reflog в моей еженедельной серии Git Tip of the Week здесь:

http://alblue.bandlem.com/2011/05/git-tip-of-week-reflogs.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...