GIT клонирует ветку на более старый коммит в другом каталоге

У меня 2 каталога одного и того же проекта, пусть они называются каталогами A и B.

Эти две папки были клонированы из основного репозитория git в другом месте, поэтому они оба начали с одного и того же коммита git репо.

Теперь A остался с исходным кодом, исправил несколько незначительных ошибок и зафиксировал изменения, поэтому ветка Git выглядит так:

A: (original)-(bug fix 1) - (bug fix 2) - (bug fix 3)

В то время как B, я решил изменить внешний вид приложения, но я еще не зафиксировал. так что ветка B git выглядит так:

B: (original)

Я хотел бы объединить эти 2 репозитория git с оригинальным клоном, чтобы у меня было следующее:

A: (original)-(bug fix 1) - (bug fix 2) - (bug fix 3)--------(merge both)

           \                                                    /
branch B:   \ -----------------(New version look) -------------

2 ответа

Решение

Если вы можете вернуться к этому репо, но вы не хотите подталкивать B, вы можете:

  • иди к своему местному клону
  • добавьте локальный клон B в качестве удаленного:

    git remote add repoB ../B
    
  • получить и объединить:

    git fetch repoB
    git checkout A
    git merge repoB/B
    

Здравствуйте, у меня есть 2 каталога одного проекта, пусть они называются каталогами A и B. Эти две папки были клонированы из основного репозитория git в другом месте,

Вместо клонирования используйте репозитории


git worktree

Git Worktree была введена в 2007 году под contrib папка в git repo и называлась new-workdir, В git v2.5 это было переименовано в worktree,

Самый простой синтаксис такой:

git worktree add <second path>/<branch name>

создаст другую папку на вашем компьютере, которая позволит вам работать в разных ветках одновременно.

git worktree создаст 2 отдельные рабочие папки, отделенные друг от друга, указывая на один и тот же репозиторий.

Это позволит вам проводить любые эксперименты на новом рабочем дереве, не оказывая никакого влияния на сам репозиторий. На прикрепленном изображении вы видите, что есть 2 отдельные рабочие папки, но обе они используют один репозиторий и делятся контентом.

Вот пример того, как создать новое рабочее дерево и каков его результат:

введите описание изображения здесь

Я хотел бы объединить эти 2 репозитория git с оригинальным клоном, чтобы у меня было следующее...

Теперь, когда вы работаете с одним и тем же хранилищем, вы можете merge, cherry-pick без необходимости тянуть или толкать пульт, так как вам не нужно использовать пульт.
все местные!

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