Как применить одно и то же исправление к двум отдельным веткам с помощью git - PullRequest
0 голосов
/ 19 декабря 2018

Это вопрос о конкретной ситуации, с которой я столкнулся при работе с git.

Скажем, у меня есть приложение с главной веткой (конечно, с несколькими коммитами).Приложение работает.

Затем я решаю (например, фактическая вещь не так важна) перевести комментарии в коде, поэтому я создаю ветку с именем translation и начинаюпереведите все.Я фиксирую несколько раз.

Затем я понимаю, что есть ошибка ( не связана с переводом).Конечно, я могу исправить ошибку, но как правильно выполнить с помощью git ?

(учтите, что это исправление должно относиться как к основной версии, так и к переведенной версии,но мастеру не нужно ничего переводить (так что я думаю, что нет слияния ??)

Я могу представить две (2) возможности:

1) перейти к мастеру, создать исправлениеветка, исправление ошибки и фиксация.Затем перейдите к переводу и .... упс ... Я не знаю, как "скопировать" это исправить там тоже

2) Исправить в переводе и объединить ??(но опять же, я не могу объединить часть перевода ??)

Ответы [ 4 ]

0 голосов
/ 20 декабря 2018

Попробуйте этот метод:

  1. Проверьте коммит, который привел к ошибке, однако в далеком прошлом

    git checkout -b fixthatbug $thatcommit
    
  2. исправьте ошибку и подтвердитеон
  3. объединяет исправление везде, где необходимо объединение
0 голосов
/ 19 декабря 2018

Наилучший способ подобен 1)

- перейти к мастеру, создать ветку исправлений, исправить ошибку и зафиксировать.Затем добавьте его в master и объедините master в translation branch

Если вам нужно только это исправление для translation branch, вы можете cherry-pick commit (s)в вашу ветку.

0 голосов
/ 19 декабря 2018

1) является стратегией исправления.Вы фиксируете ваш патч в master, а затем cherry-pick, который фиксирует, где вы хотите / нуждаетесь.

The 2) явно не ориентирован на git и подвержен ошибкам

Существует 3) альтернатива,Вы можете добавить свое исправление в историю перевода.Как ?Ваш перевод основан на мастере, верно?так что вы можете зафиксировать на master, а затем перебазировать вашу ветку перевода поверх master.Это будет похоже на то, что исправление уже было включено, когда вы переводили ветки.Недостаток: это перезапишет историю перевода, поэтому лучше, если перевод будет локальной ветвью.Если это не так, вам придется принудительно толкнуть ветку, что далеко от идеала (если вы точно не знаете, что делаете). РЕДАКТИРОВАТЬ Недостаток 2: Кроме того, 3) подразумевает включение, возможно, других коммитов, которые вы вставили в историю ветки master перед исправлением (что может быть нежелательным в ветке перевода).

0 голосов
/ 19 декабря 2018

Я рекомендую ваше первое предложение, а именно просто вернуться к master и исправить там ошибку.Это предполагает, что ошибка не имеет ничего общего с переводом комментариев, чего, вероятно, нет.

Затем вы можете rebase свою ветку перевода на master, чтобы внести исправление ошибки, прежде чем выбудьте готовы объединить эту ветвь функций обратно в master.Вы можете получить много конфликтов слияния, потому что все переводы изменились.Но в этом случае вы также можете получить такие же конфликты, даже если бы вы полностью игнорировали исправление ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...