Как получить ссылку на коммит в git

Позволяет иметь ветку git master и в какой-то момент позволяет ветке fork для релиза (ветвь релиза будет называться R1). Иногда мне нужно нажать на commit для них обоих (master и R1). Обычно я работаю над мастер-веткой, когда я заканчиваю, я тестирую ее, выбираю вишню на R1, тестирую там и нажимаю на них обоих.

Я хотел бы иметь в R1 коммит ссылку на главную ветку. Это делается с помощью cherry-pick -x. Однако этот подход работает ТОЛЬКО, когда я нажимаю на главную ветвь, а затем выбираю вишню от главной к R1. Допустим, что тестирование занимает слишком много времени, и я хочу синхронизировать master и R1 столько, сколько могу (я хочу минимизировать промежуток времени между нажатиями), поэтому я бы хотел нажать одновременно. Таким образом, я не могу получить ссылку (-x в cherry-pick), потому что хэш изменится при выполнении ребазирования в R1 (нельзя использовать слияние). Есть ли способ, как автоматизировать это, поэтому у меня будет правильный хэш в описании R1? Что-то вроде хэш-предсказания?

1 ответ

Есть ли способ, как автоматизировать это, поэтому у меня будет правильный хэш в описании R1? Что-то вроде хэш-предсказания?

Краткий ответ: нет.

Более длинный ответ - нет, но вам может не потребоваться предсказывать хэш. Проблема здесь в том, что вы копируете фиксированный коммит - давайте назовем это F-от master в другую ветку. Давайте назовем это -x выбранная копия Fx, Вы также можете в конечном итоге скопировать фиксацию исправления в новую фиксацию исправления, потому что вы избегаете использования git merge в этом рабочем процессе, так что если master приобрел новые коммиты, вы используете rebase для cherry-pick F в новый коммит F' что вы добавите к masterи теперь вы хотите заменить свой Fx- Ваша вишневая копия F- с выбранной вишней копией F',

Итак, вы можете просто сделать это. Если вы перебазируете коммит F делать F'полоса Fx из другой ветки и запустите заново git cherry-pick -x копировать F' в Fx', Вы уже знаете, что это за коммит, потому что у вас есть оригинальный хэш-идентификатор F и сбор вишни (через ребазу) производит F'; и у тебя есть Fхэш-идентификатор в Fx, Недостатком является то, что это повторяет любые коммиты после Fx на другой ветке, т.к. Fx из другой ветки "может быть нетривиальным.

(Альтернативный подход, позволяющий избежать всей этой суеты, состоит в том, чтобы объединить исправление в обе ветви. См. Как выполнить частичное объединение в git? И связанные статьи блога.)

Другие вопросы по тегам