Создать ветку git из выбранных коммитов в другой ветке - PullRequest
3 голосов
/ 17 августа 2010

Я создал ветку «feature» от master и работал долгое время. Затем я получил последние коммиты ветки master и перебросил свои "особенные" коммиты ветки поверх него. Затем я слил «особенность» в мастера. Однако я забыл о слиянии и продолжил коммит в ветку «Feature». Теперь я хочу, чтобы эти коммиты были в новой ветке, поэтому я бы хотел создать еще одну ветку "feature_2", основанную на коммитах в ветке "feature" с момента последнего слияния с master. Есть предложения?

1 Ответ

1 голос
/ 17 августа 2010

Учитывая, что:

  • feature уже ссылается на коммиты с момента последнего слияния с master
  • ветвями являются просто указателями
x--x--x (master)
       \
        y--y--y (feature)

Вы можете просто:

  • git checkout feature
  • git checkout -b feature2
  • git branch -f feature master
    (при условии, что на master не было выполнено никаких коммитовfeature объединить)
x--x--x (master, feature)
       \
        y--y--y (feature2)

На все коммиты от мастера больше не ссылается feature (который сбрасывается на master), но теперь доступны через feature2(где feature находится перед сбросом на master)


OP Chip Castle добавляет:

У меня есть еще 3с тех пор члены команды, чьи ветви были объединены в master, не хочу объединять те же коммиты, которые я уже слил.
Я надеялся дать диапазон SHA только для коммитов, которые мне нужны, от функции доновая ветка.Есть ли способ сделать это или лучше?

Таким образом, ситуация такова:

x--x--x--y'--y' (master, updated after a fetch from other repo)
       \
        y'--y'--y--y (feature, with y' being already merged, 
                      and y being the commits I need)

Тогда вы можете просто перебазировать функцию поверх мастер: идентичные коммиты будут игнорироваться.

...