Исключая отдельные куски из слияния - PullRequest
0 голосов
/ 13 октября 2018

Я использую git для управления исходным кодом в небольшом проекте.Мой ожидаемый рабочий процесс - создать ветку для каждого основного раздела функциональности.Каждая ветка будет включать в себя разрабатываемый код (вместе с любым вспомогательным кодом) и связанный тестовый код (я разрабатываю на Python и использую doc test).Чтобы сохранить хорошую историю и обеспечить повторяемость теста, я намерен зафиксировать как разработанный код, так и тестовый код в каждой ветви.Как только код для определенной функциональности будет завершен и протестирован должным образом, я объединю его с основной производственной ветвью.

Однако я не хочу сливать тестовый код с производственной ветвью.Поскольку это не включает блоки кода в файлы, которые я хочу объединить, как мне это сделать?При поиске ответов все, что я нахожу, это как исключить файлы целиком.

Ответы [ 2 ]

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

git cherry-pick - это то, что вы ищете.Самым простым способом было бы иметь ваш разработанный код и тестовый код в отдельных коммитах в одной ветке (в любом случае рекомендуется иметь небольшие, легко усваиваемые коммиты), а затем вставлять в мастер только разработанный код.

  1. Потяните ветку на месте.Используйте свой графический интерфейс git или потяните его вниз в командной строке, как хотите.
  2. Вернитесь в ветку, в которую вы сливаетесь.Вы, вероятно, сделаете это, запустив мастер git checkout. "
  3. Черри выберет коммиты, которые вы хотите, в эту ветку. Перейдите либо в журнал git, либо в пользовательский интерфейс GitHub и получите уникальные хеши коммитов для каждого из коммитов.что вы хотите, а затем выполните эту команду: git cherry-pick super-long-hash-here. Это будет тянуть только этот коммит в вашу текущую ветвь.
  4. Нажмите эту ветку, как обычно. git push origin master

Краткое руководство по git cherry-pick *

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

Одним из способов было бы сделать слияние --no-commit, и после разрешения любых конфликтов сделайте git reset --patch, чтобы убрать ненужные блоки, прежде чем совершать результат слияния.Если вы заблуждаетесь и забываете их убрать, то после сброса легко выполнить git commit --amend it.

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