Subversion имеет -record-only для слияний, как мне сделать то же самое в Git?

У меня есть репо, где "мастер" идет в определенном направлении, а вторая ветвь "foo" будет расходиться для нескольких коммитов, а затем отслеживать все последующие изменения "master" после этого. Это все, конечно, выбор.

В Subversion вы можете сделать -record-only merge, чтобы отметить вещи как "слияние произошло", хотя никаких реальных изменений не было. т.е. это изменяет номера отслеживания слияния в свойствах, прикрепленных к каталогам в целевой ветке.

У меня была игра с...

git merge --no-commit master

.. как что-то, с чем я могу поработать до того, как сделаю фиксацию, но он делает чертовски беспочвенную ветку цели для части рассматриваемого изменения (переименовать, а затем удалить).

Должен быть более простой способ.?

  • Пол

Ответы

Ответ 1

Это то, что вы ищете?

git merge --strategy=ours master

наш

Это разрешает любое количество голов, но результирующее дерево слияния всегда относится к текущему ветки ветки, эффективно игнорируя все изменения из всех других ветвей. Он предназначен для замены старой истории развития боковых ветвей.

Кажется, это то, о чем вы просите, - он создает комманду слияния, которая фактически не вносит никаких изменений.

Но вы действительно хотите это сделать? Есть ли какая-то причина, по которой вы не можете просто разделить ветки (без слияния), затем слить позже?

Ответ 2

Пол, git обрабатывает переименование, за которым следует удаление с (относительно svn). Он отслеживает контент, а не имя файла. В svn это было бы больно, какие проблемы возникают при работе с git при этом?

Ответ 3

jefromi прибил его. Здесь реальная вещь - http://github.com/jbehave/jbehave-core/blob/master/examples/trader/src/main/java/org/jbehave/examples/trader/TraderStory.java (играйте с ветвями коммутатора и посмотрите на строку 65).

Это было не столько для "отбрасывания истории", сколько для использования Git для жонглирования расходящихся изменений с одной базы. Чтобы заставить людей принять JBehave (IMO), нам нужно сделать примеры очень легкими для подражания. До этого примера "Trader" был JBehave vanilla + вариант Guice + вариант SpringFramework + вариант PicoContainer в одном исходном каталоге. Теперь четыре ветки могут иллюстрировать большинство канонических представлений примера "Трейдер".