Можно ли в гите пропустить пару комитов при выставлении tagов?
Нужно выделить все изменения, которые относятся к определенному функционалу в метку (tag).
Есть три ветки, production, master, new_release, последнюю ветку я создал когда начал работать над новым функционалом.
С дуру в начале работы я не выставил tag для своих комитов и посреди процесса разработки затянул пару изменений с мастера, чтобі потом меньше біло конфликтов при мерже. Сейчас мне нужно пометить все комиты, кроме мержа из мастера.
Возможно ли это сделать ?
Я по ходу не сильно понял как он работает. Можно десяток комитов объеденить под одним тегом ? Если в одной ветке изменения для нескольких фич ? Например в мастер влили изменения из двух фичебранчей при чем не за один раз а за четыре - пять раз ? Таги мигрируют с комитами между бранчами ?
Это точно. Покачай чужие проекты (известные) и посмотри, как там делают теги. Используй gitk для просмотра.
Тег - это просто метка. Ты как бы метишь коммит, чтобы потом его можно было найти. К тегу можно ещё и текст прикрепить.
Можно десяток комитов объеденить под одним тегом ?
И коммиты расматриваешь неправильно. В идеале, коммит - это отдельное независимое изменение. То есть они должны быть настолько независимы друг от друга, чтобы их можно было свободно менять местами или раскладывать по разным веткам. Нет такого понятия "десяток коммитов", коммиты не должны знать друг о друге. Бывает, конечно, что один коммит что-то добавляет, а другой коммит это же меняет дальше. Но в идеале они должны тасоваться в любом порядке и иметь одинаковый эффект.
abcd0x00: Я обычно не жду когда наберется логически и технически независимый набор изменений чтобы сделать комит и пуш, поэтому, почти всегда, 5- 20 комитов очень сильно зависят друг от друга. Почему я сразу делаю пуш ? Просто хочу иметь возможность открыт свой код например в c9.io, сделать git pull и продолжить работу.
Я так понимаю кроме как фичебранча нет другой возможности объединить этот десяток комитов в логически и технически независимую пачку.
Владимир: ты можешь набрать коммитов, а потом сделать слияние с обязательным коммитом слияния (опция --no-ff у merge). Тогда оно будет выглядеть как единое действие. Но это только для удобства восприятия, потому что коммиты считаются как бы отдельными островками, каждый из которых вносит свой вклад.