Как получить ссылку на коммит в git - PullRequest
0 голосов
/ 03 октября 2018

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

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

1 Ответ

0 голосов
/ 03 октября 2018

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

Короткий ответ - нет.

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

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

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

...