Git ветвление и локальные изменения
Мы не можем переключать ветки в Git без фиксации изменений или их сохранения. Какая общая картина стоит за этим, и почему Линус использовал этот подход при разработке Git?
Если переключение ветвей приводит к локальным изменениям, обнаруживающимся в разных ветвях, какой смысл в ветвях, поскольку они должны работать изолированно?
1 ответ
Мы не можем переключать ветки в Git без фиксации изменений или их сохранения.
На самом деле вы можете принудительно переключить ветку, но тогда вы потеряете все незафиксированные изменения в текущей ветке. Это должно быть очень необычно, если вы хотите потерять свою текущую работу только из-за смены ветки. Почему бы не зафиксировать это сначала в текущей ветке или, по крайней мере, stash
изменения, чтобы вы могли вернуться?
В любом случае для принудительного переключения ветки вы можете:
1)
git checkout -f <new_branch> // will lose any uncommitted changes on <old_branch>
или же,
2)
git reset --hard <commit-hash-id-of-new-branch> // will lose any uncommitted changes on <old_branch>