Как получить ссылку на коммит в 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? И связанные статьи блога.)