Я новичок в git, и у меня есть репозиторий git, который я использую с GitKraken. В этом репозитории у меня есть несколько веток, и я могу переходить от ветки к ветке, чтобы при необходимости вносить изменения.
Сейчас я нахожусь в ситуации, когда я буду вносить некоторые большие изменения в одну ветку, которые я не хочу фиксировать, но тем временем я хотел бы внести некоторые незначительные изменения в другую ветку.
Я привык работать с TFS и там могу просто оформить ветку в другую папку.
Я пытался просто скопировать папку, и мое первое впечатление - это должно сработать ....
Но я видел в сети заметки, в которых говорится, что вместо этого я должен клонировать репозиторий.
Версия git ниже 2.5, поэтому я не могу использовать Git-worktree.
Можно ли просто скопировать папку или это может иметь неожиданный эффект?
По сути, это то, что функциональные ветки предназначены для. К вашему сведению, нет проблем с копированием вашего репозитория GIT в другую папку. Но это будет точная копия (удаленно и все), так в чем смысл? Похоже, вам нужна функциональная ветка, но не нажимайте ее, как предлагает @Rup
Помните, что репозиторий GIT - это точная копия весь репозиторий. Итак, все, что есть на сервере, у вас тоже есть. Таким образом, вы можете делать все, что хотите, на своей локальной копии





Возможно, вы захотите посмотреть, подойдет ли вам git stashing. Не рекомендую копировать в новую папку. В основном потому, что я не знаю, возможно ли это вообще, и никогда не видел в этом рекомендации. Клонирование также должно работать, но похоже, что вы заинтересованы в хранении / хранении на полках, а не в фиксации ваших изменений в ветке 1 перед проверкой ветки 2.
https://git-scm.com/book/en/v1/Git-Tools-Stashing
Я думаю, что лучше всего работает, если у вас есть изменения, которые вы «не хотите фиксировать», но хотели бы сохранить, прежде чем проверять другую ветку.
OP спрашивает не об этом. Они хотят иметь возможность делать несколько коммитов локально. Пожалуйста, перечитайте вопрос. Я сейчас нахожусь в ситуации, когда я буду делать некоторые большие изменения в 1 ветке, которые я не хочу фиксировать.
Я читаю это. «Можно ли копировать папку git?» Вы говорите, что OP хочет сделать несколько коммитов. Вы уверены, что прочитали вопрос? Также нет упоминания о пульте дистанционного управления. Что делать, если вся работа локальная и удаленной ветки нет.
Если ваш ответ «Я не знаю, возможно ли это вообще» (прямая цитата из этого ответа), это сильный намек на то, что у вас есть комментарий, а не ответ.
Согласен, это должен был быть комментарий.
Да, если вы скопируете всю папку из корня кассы, включая скрытую папку .git, то вы сможете вносить изменения в каждую рабочую копию независимо. Каждый из них содержит свою собственную копию объектов репозитория, и они будут вести себя точно так же, как если бы вы запустили два отдельных клона.
Как обсуждалось в комментариях, это не обязательно хороший вариант использования для этого: было бы проще (и с большей экономией места на диске) зафиксировать ваши большие изменения в локальной ветке, чтобы затем вы могли переключиться и сделать другие изменения. В этом нет реального недостатка; если вы действительно хотите удалить эту временную фиксацию позже, это тоже легко сделать.
Однако, если вы собираетесь это сделать, возможно, вы захотите
git repack -ad, чтобы в дереве объектов было меньше файлов для копированияgit clone --reference, который может быть немного более экономичным на диске.git в новую рабочую копию, а затем git reset --hard, чтобы проверить все файлы там.Будут ли они действовать как клоны отдельный? Или они будут чем-то неразрывно запутанным? Например, если вы выполните фиксацию в одной и отправите ее в источник, не сможет ли другой клон затем загрузить новую ревизию во время синхронизации, поскольку в метаданных ревизии указано, что она возникла из этого GUID клона?
AFAIK не существует такой вещи, как GUID клона, и сервер не отслеживает клоны, но рад быть исправленным. Я пробовал клонировать одно и то же репо дважды и различать состояние: есть различия в отметках времени в .git / logs, но файл .git / index также отличается, и это двоичный формат, поэтому я не могу легко определить, что изменилось. Я бы предположил, что любой GUID будет находиться в .git / config, но, возможно, он находится в индексе, я полагаю.
«что я не хочу фиксировать» - вы всегда можете зафиксировать их локально, а затем вернуться позже и отменить фиксацию, чтобы вернуть свои файлы и оставить состояние именно так, как вы этого хотите.