LINUX.ORG.RU

Как в Git смержить изменения до конкретного коммита?

 ,


0

1

Имеется две ветки: master и experimental.

В experimental на какой-то определенный коммит появилась стабильная версия программы. Но в этот момент заливки experimental в master не было произведено. И к настоящему моменту в experimental продолжается работа над новой, пока нестабильной версией.

Вопрос: как влить изменения в ветку master из experimental, но не всю ветку experimental, а только до нужного коммита?

★★★★★

Ответ на: комментарий от Deleted

git merge <id-нужного-коммита>

Ты уверен, что смержится все до нужного коммита, а не этот один коммит?

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

Merge происходит от общего предка. Если нужен тoлько текущий коммит, то как раз cherry-pick.

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

Да что-то в хелпе даже не написано, где нужно указывать имя ветки, из которой нужно влить в текущую:

SYNOPSIS
git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit]
        [-s <strategy>] [-X <strategy-option>]
        [--[no-]rerere-autoupdate] [-m <msg>] [<commit>…]
git merge <msg> HEAD <commit>…
git merge --abort

Хотя стандартное использование merge, если сливать просто две ветки на текущий момент времени:
git merge имя_ветки

Но в синтаксисе нигде про ветки не написано. Подумал, может вместо коммита можно писать имя ветки, но тоже ничего подобного:
<commit>… 

Commits, usually other branch heads, to merge into our branch. Specifying more than one commit will create a merge with more than two parents (affectionately called an Octopus merge). 

If no commit is given from the command line, and if merge.defaultToUpstream configuration variable is set, merge the remote-tracking branches that the current branch is configured to use as its upstream. See also the configuration section of this manual page.

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

Как уже было сказано,

git checkout master
git log experimental
# найти нужный id коммита
git merge <id коммита>

И да, смержится всё вплоть до этого коммита. Если возникают такие вопросы — рекомендую почитать Git Book.

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

Подумал, может вместо коммита можно писать имя ветки, но тоже ничего подобного:

Commits, usually other branch heads

Действительно, ничего подобного.

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

Все получится. Если хочешь более наглядно, то можно как-то так:

git checkout <id-нужного-коммита>
git checkout -b tmp-branch
git log
git checkout master
git merge tmp-branch

Medar ★★★★★
()
Ответ на: комментарий от i-rinat

Стоят, я их интерфейса не понимаю. Мне проще командами, так хоть как то результат гарантировать можно.

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

Понял тебя. Что—то я такой метод не смог сразу придумать. Только в конце надо еще темповую ветку удалить.

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

В них не мержить нужно, в них нужно смотреть на структуру дерева до и после команд, чтобы понимать, что делают команды. Со временем надобность в визуализации спадёт.

i-rinat ★★★★★
()

man git, вендоламер.

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