LINUX.ORG.RU

git-2 перенести один комит в другую ветку

 ,


0

3

Всем привет, и в особенности адекватным гуру git'a.

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

В интернетах в таких случаях рекомендуют cherry-pick, но эти советы достаточно старые, и в git'e версии 2.1 cherry-pick тянет кучу коммитов вместо одного, как будно это merge. Пробовал разобраться по ману, но как-то не срослось у нас.

Еще нашел команды format-patch и apply, но хотелось бы обойтись одной командой.

★★

и в git'e версии 2.1 cherry-pick тянет кучу коммитов вместо одного

tell me moar.

bj
()
Ответ на: комментарий от panter_dsd
for i in `seq 1 5`; do echo $i >> readme; git add .; git commit -m "$i"; done
git branch r1
for i in `seq 6 10`; do echo $i >> readme; git add .; git commit -m "$i"; done
git checkout r1
git cherry-pick 4817545 #sha коммита 9

Выдает ошибку

error: could not apply 4817545... 9
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

А в файле readme вообще трэш

1
2
3
4
5
1
2
3
4
5
<<<<<<< HEAD
=======
6
7
8
9
[quote][quote][quote][quote][quote][quote][quote] 4817545... 9[br][/quote][/quote][/quote][/quote][/quote][/quote][/quote]

kulti ★★
() автор топика

Еще нашел команды format-patch и apply, но хотелось бы обойтись одной командой.

чем тебе это не одна команда?

format-patch; apply

q11q11 ★★★★★
()
Ответ на: комментарий от panter_dsd

Почему? Я ожидал, что он применит +9 и добавит эту 9 в конец. А он притянул еще и 6, 7, 8 из предыдущих коммитов.

kulti ★★
() автор топика
Ответ на: комментарий от kulti

Черрипик - это патч текущего состояния файлов в коммите.

panter_dsd ★★★★
()
Ответ на: комментарий от kulti

Сделай git show того коммита, который ты черрипикаешь, и увидишь, что 6, 7 и 8 там будут.

А сам коммит будет пытаться добавить к этому 9.

Конфликт как раз появляется, когда коммит пытается добавить 9 после 6, 7 и 8, но не находит их в ожидаемом месте.

devsdc ★★
()
Последнее исправление: devsdc (всего исправлений: 1)
Ответ на: комментарий от devsdc

А, понял. В дифе же не только то, что добавили и удалил с номерамми строк, но и окружающие их строки. В общем, если делать не синтетический тест, а править реальный код, то там cherry-pick будет более-менее нормально работать.

kulti ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.