Можно ли скопировать папку git в Windows для управления несколькими ветками?

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

Сейчас я нахожусь в ситуации, когда я буду вносить некоторые большие изменения в одну ветку, которые я не хочу фиксировать, но в то же время я хотел бы внести небольшие изменения в другую ветку.

Я привык работать с TFS и там я могу просто оформить ветку в другую папку.

Я попытался просто скопировать папку, и мое первое впечатление, что это должно работать....

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

Версия git ниже 2.5, поэтому я не могу использовать Git-worktree.

Можно ли просто скопировать папку или это может иметь неожиданный эффект?

2 ответа

Да, если скопировать всю папку из корня кассы, включая скрытую .git папку, то вы можете вносить изменения в каждую рабочую копию независимо. Каждый содержит свою собственную копию объектов репозитория, и они будут вести себя точно так же, как если бы вы запустили два отдельных клона.

Как обсуждалось в комментариях, это не всегда хороший вариант использования для этого, однако: было бы легче (и более эффективно использовать дисковое пространство) фиксировать ваши большие изменения в локальной ветви, чтобы вы могли затем переключаться и делать другие изменения. Там нет реального недостатка в этом; если вы хотите удалить этот временный коммит позже, это также легко сделать.

Однако, если вы собираетесь сделать это, то вы, вероятно, хотите

  • запустить git repack -ad во-первых, чтобы в дереве объектов было меньше файлов для копирования
  • рассмотреть возможность использования git clone --reference вместо этого, что может быть немного более эффективным с точки зрения дискового пространства
  • или вы хотите чистую рабочую копию, вы можете создать новую папку рабочей копии, копировать только скрытые .git папку в новую рабочую копию, а затем git reset --hard чтобы проверить все файлы там тоже.

Возможно, вы захотите посмотреть, подойдет ли вам git stashing. Я не рекомендую копировать в новую папку. Главным образом потому, что я не знаю, возможно ли это вообще, и я никогда не рассматривал это как рекомендацию. Клонирование также должно работать, но похоже, что вы заинтересованы в отложении / сохранении, а не в фиксации изменений в branch1 перед проверкой branch2.

https://git-scm.com/book/en/v1/Git-Tools-Stashing

Другие вопросы по тегам