Я устал от проверки между филиалами. Итак, я дважды клонировал репозиторий на свой компьютер.
Теперь у меня есть разные папки одного и того же репо.
Я хочу скопировать определенный локальный коммит, который у меня есть на старом клоне, в новый клон. Какой набор команд git поможет мне это сделать? (может быть, черри?)
Это возможное решение, но его реализация потребует от меня дополнительной работы. Допустим, у меня есть мастер ветки и функция поверх того же клона. И я говорю: черт возьми, я хочу, чтобы каждая из ветвей была отдельным клоном. Итак, теперь у меня есть 3 клона одного и того же репо: 1 из смешанных веток master/feature 1 только master 1 только feature Я хочу скопировать последнюю фиксацию любой из ветвей из смешанного клона в эти новые клоны. И я имею в виду локальные последние коммиты, а не удаленные! Загрузка их в удаленное репо также является проблемой.
Да, именно для этого вы бы использовали рабочие деревья. Вместо того, чтобы делать несколько клонов. Я не уверен, что вы подразумеваете под «реализацией этого потребует дополнительной работы» - он уже реализован Git, вы можете просто использовать его.
Я уже дважды клонировал и делал длинную сборку для каждого из них. Есть ли способ «интегрировать» 2 клона в одно рабочее дерево?
В долгосрочной перспективе вы хотите использовать рабочие деревья git.
Чтобы исправить вашу текущую ситуацию, вы можете выбрать между репозиториями, создав пульты из ваших локальных каталогов.
Добавив еще один локальный репозиторий в качестве удаленного и выполнив git fetch
, вы можете выбрать любую фиксацию, которую хотите, из этого репо, используя только SHA.
Например, если вы хотите выбрать фиксацию из old_clone
с SHA, начинающимся с e9bee1bc
:
cd /projects/new_clone
git remote add old_clone /projects/old_clone
git fetch old_clone
git cherry-pick e9bee1bc
Вы также можете использовать аналогичную стратегию для преобразования нескольких клонированных пультов в рабочие деревья. Например, если вы хотите создать рабочее дерево из исходного проекта и добавить локальную копию branch1
из new_clone
в новое рабочее дерево:
cd /projects/original
git worktree add /projects/worktree_1
cd /projects/worktree_1
git remote add new_clone /projects/new_clone
git fetch new_clone
git switch -c branch1 new_clone/branch1
Спасибо за помощь! Я воспользовался вашим подходом и по пути превратил себя в рабочее дерево! Когда у меня будет больше репутации, я поддержу ваше решение :)
Отвечает ли это на ваш вопрос? Для чего мне использовать git-worktree? или Как я могу иметь несколько рабочих каталогов с Git?