Задать вопрос
@Xtone

Как вынести изменения в отдельную ветку?

У меня часто такая ситуация бывает что одна ветка слишком разрастается, в ней накапливается много полезного, но не относящегося к задаче рефакторинга (просто по мере того как разбираю какой-то старый чужой код - для понятности вношу мелкие правки). Потом когда меня кто-то ревьюит - говорят что неудобно, слишком много изменений. Но отменять их не хочется. Вопрос такой: как с удобством вынести часть изменений в отдельную ветку? Просто последний раз когда я такое пытался сделать я создал отдельно копию проекта и по файлу копировал содержимое. Но это очень неудобно... Может есть какой-то более простой способ? Либо через интерфейс Гитхаба, либо через Андроид Студию, либо через что-то еще...
  • Вопрос задан
  • 391 просмотр
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • ProductStar
    Python + Flask + Git: веб-разработка с нуля
    2 месяца
    Далее
  • Учебный центр IBS
    DEV-007 Введение в систему контроля версий Git
    1 неделя
    Далее
  • Stepik
    Git (система контроля версий)
    1 неделя
    Далее
Решения вопроса 2
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Ну так создайте ещё одну ветку и вынесите туда только часть изменений. Например, через cherry-pick отдельных коммитов с предыдущей ветки. Либо через soft reset собрать новую ветку, оставив только нужное.

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

Либо через интерфейс Гитхаба, либо через Андроид Студию
Studio это отличный Git-клиент — работайте там.
Ответ написан
Комментировать
@Xtone Автор вопроса
Разобрался как это делается. Для этого придуманы патчи в студии.

1. Находясь в своей ветке тыкнул в списке веток по мастеру и "show diff with working tree".
2. Видя дифф мастера и своей ветки по очереди отменил те файлы которые надо перенести и закоммитил (можно без отправки на сервер).
3. Тыкнул по новому коммиту и сделал его revert (обратный от него коммит).
4. Тыкнул по прошлому коммиту и сделал reset до него с сохранением изменений в файлах (soft).
5. Создал патч из локальных изменений (Git/Patch/Create patch from local changes). Это просто один файл в который скидываются все правки и его удобно переносить.
6. По желанию отменяю еще коммит, который отменил мой рефакторинг.
7. Перехожу в мастер, создаю новую ветку и применяю патч.
8. Создаю Pull Request из новой ветки, жду ревью рефакторинга, вливаю в мастер.
9. Вливаю мастер в свою первую ветку и наслаждаюсь тем что правок там стало намного меньше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
Made In Dream Санкт-Петербург
от 100 000 до 220 000 ₽
от 250 000 до 320 000 ₽