Подтвердить что ты не робот

В git, как удалить фиксацию из одной ветки и применить ее к другой ветке?

У меня две ветки от мастера, каждая для другой функции, а затем у меня есть ветвь синтеза, которая объединяет эти два. Я совершил что-то для ветки синтеза, но теперь я вижу, что я бы скорее применил это изменение к одной из ветвей, относящихся к этой функции. Есть ли способ сделать это неприменимо/применить где-нибудь еще маневр с помощью git?

4b9b3361

Ответ 1

Передача черри-pick для целевой ветки и ветвь источника reset. Предполагая, что вы хотите перенести последнюю фиксацию с ветки source на target, выполните:

git checkout target
git cherry-pick source
git checkout source
git reset --hard source^

Если коммит не был последним, вам нужно будет использовать git rebase -i вместо последней команды и выбрать определенное имя фиксации для cherry-pick.

Ответ 2

Как правило, когда я делаю что-то подобное, я буду:

  • Создайте обратный файл патча с помощью git diff (например, git diff HEAD^ HEAD)
  • Применить этот обратный патч к ветке. Я хочу удалить это изменение.
  • Отправляем ветку. Я хочу, чтобы изменения на
  • Используйте git cherry-pick, чтобы применить применимую фиксацию

Я считаю, что есть более простой способ, но я предпочитаю это, потому что я лучше использую (и помню) команды diff/cherry-pick