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>
Другие вопросы по тегам