Git сливается между двумя папками, а не ветвями

Предположим, что следующий сценарий:

У меня есть проект git, который имеет dir с именем project. Внутри этого романа я совершил некоторые коммиты. Затем с cp -r я продублировал этот каталог в директорию с именем project-with-feature-b, т.е. Вручную создал ветку.

Теперь я хочу объединить эти две папки, как если бы они были двумя ветвями, есть ли способ сделать это с помощью git?

Чтобы быть более конкретным для моей проблемы. У меня есть репозиторий svn, который я использую с git -svn инструментом для клонирования. И я не могу использовать опции -T/-b/-t, но я хочу слить.

Ответ 1

Да, вы можете технически выполнить это, но только потому, что еще не поздно исправить свою ошибку. Вам нужно вернуться во времени и сделать это правильно:

  • Переместите папку project-with-feature-b вне вашего репозитория git:

    $ mv project-with-feature-b ..
    
  • Вернитесь к git log и найдите идентификатор фиксации последнего коммита, прежде чем создать каталог project-with-feature-b. Если вы не сделали никаких коммитов внутри "каталога" project-with-feature-b, вы можете пропустить этот шаг.

  • Создайте новую ветвь с именем feature-b на основе этого идентификатора фиксации. Если вы пропустили шаг 2, опустите <commit-id-from-step-2>

    $ git branch feature-b <commit-id-from-step-2>
    $ git checkout feature-b
    
  • В ветке feature-b замените папку project резервной копией project-with-feauture-b

    $ rm -rf project
    $ mv ../project-with-feature-b project
    $ git add project
    $ git commit -m "Add feature-b"
    
  • Вернитесь к своей основной ветке и объедините ветвь feature-b в мастер

    $ git merge --no-ff feature-b
    

В будущем вы должны использовать ветки, как указано выше, прежде чем начать работу. Научитесь правильно использовать инструменты, а не как вы думаете, что они должны работать.

Ответ 3

Эти вопросы очень старые, я недавно присоединился.

Я использую ubuntu и использую meld для решения проблем слияния.

Итак, если у меня есть 2 папки одного и того же приложения, которые могут иметь незначительные изменения.

Я сделаю это в терминале

meld ./app_branch_master ./app_branch_dev

Это откроет как папку, Meld потребует времени для сравнения обеих папок. Он покажет вам, что там с левой стороны и что с правой стороны. Вы также можете переместить небольшой код.

Как я это делаю.