Как взять ветку, примененную к ветке A, и применить ее к ветке B - PullRequest
1 голос
/ 11 июля 2019

Я выполнил некоторую работу по исправлению производственной проблемы в ветке под названием myfix. Проблема в том, что я не могу вспомнить, на какой ветке я основывал myfix, то есть я не знаю, что я проверил до того, как начал кодировать код. Я предполагаю, что это была функция / xx, над которой мы все работали в то время.

Как они хотят поставить мое исправление в производство, которое является мастером.

В основном все изменения, которые я сделал в myfix в неизвестной ветке, нужно применить к master.

Проблема в том, что myfix будет находиться над веткой, содержащей другие вещи, поэтому я не могу просто объединить myfix с master.

Я предполагаю, что одним из вариантов является проверка мастера, а затем извлечение определенных файлов из myfix. Это лучший подход?

Только 3 файла были изменены. Если худшее становится хуже, я мог бы вручную отредактировать файлы, чтобы добавить исправление, хотя могут появиться ошибки.

1 Ответ

1 голос
/ 11 июля 2019

С

git checkout master
git cherry-pick --no-commit myfix

Вы внесете в рабочее дерево все изменения последнего коммита myfix, но без фиксации.

На этом этапе вы сможете редактировать все, что захотите , а затем зафиксируйте его, когда будете довольны.


В качестве альтернативы, если вы уже знаете только те файлы, которые вам нужны из этого исправления, и не хотите принимать другие изменения, сделанные в том же коммите, вы можете

git checkout master
git checkout myfix -- path/to/file1 path/to/file2 path/to/file3
git add path/to/file1 path/to/file2 path/to/file3
git commit -m "Useful message"

Он сделает новый коммит на master, где эти 3 файла точно такие же, как на myfix ветви (что, в зависимости от ваших потребностей, может не соответствовать вашему желанию).

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