#git #tortoisegit
#git #tortoisegit
Вопрос:
Я действительно новичок в Git (и мы используем TortiseGit), но вот моя проблема. У меня есть 3 среды: Dev, QA и Production. Клиент запросил два изменения, поэтому я внес оба изменения в Dev, зафиксировал их и перенес в среду контроля качества. Теперь компания хочет, чтобы одно изменение было запущено в производство сейчас, а следующее ожидало изменения в другой системе. Как мне передать только часть коммита в Prod?
Комментарии:
1. Вы не можете (по крайней мере, технически, но вы могли бы «обойти» это). И будьте осторожны с отправкой коммитов непосредственно в производственную среду, это следует делать только для реальных исправлений, которые не могут ждать.
2. Что вы подразумеваете под «вы не можете»?
3. @OP вы работаете с ветвями?
4. Решение бедняка: нажмите фиксацию, которая отменяет изменение, которое вы не хотите выпускать, сделайте релиз, нажмите фиксацию, которая возвращает изменение обратно. Тот факт, что коммит уже покинул вашу локальную среду, делает его довольно сложным для манипулирования, возможно, это не стоит головной боли.
5. @pbond, что вы имеете в виду, что вы не должны отправлять коммиты непосредственно в производственную среду? Как еще вы могли бы запустить окончательный код в производство?
Ответ №1:
Сами коммиты являются атомарными, поэтому их нельзя разделить или разбить. Однако, поскольку коммит — это всего лишь набор изменений, мы можем разделить эти изменения, а затем создать отдельные коммиты, которые просто включают изменения, которые вы хотели бы для каждого.
Один из способов сделать это — просто выполнить программный сброс коммита перед тем, который вы хотели бы разделить, затем выполнить каждый набор изменений и зафиксировать отдельно.
Если вы уже отправили свои коммиты перед их разделением. Вам нужно будет выполнить принудительное нажатие, потому что вы заменяете старый коммит на разбитые коммиты, поэтому обязательно извлеките его, прежде чем вносить какие-либо изменения.
Согласитесь с PeeHaa, вы хотели бы создать разные ветки для каждой среды, а затем вы могли бы просто выбрать нужные коммиты.
Ответ №2:
Я использовал TortoiseGit 2.8 для разделения коммита, который находится в главной ветке. Есть довольно много шагов, но они выполняются прилично хорошо:
- Щелкните правой кнопкой мыши и покажите журнал «TortoiseGit» => «Показать журнал».
- Щелкните правой кнопкой мыши коммит перед коммитом, который вы хотите разделить.
- Выберите «Перебазировать «мастер» на этот … (G)»
- Установите флажок, чтобы включить «Принудительное перебазирование». Все коммиты, предшествующие тому, который вы щелкнули правой кнопкой мыши, теперь должны отображаться над флажком, который вы щелкнули.
- Щелкните правой кнопкой мыши коммит, который вы хотите разделить, и выберите «Редактировать». Это изменит тип перебазирования на «Редактировать» вместо «Выбрать».
- Нажмите «Начать перебазирование». После запуска индикатора выполнения появится диалоговое окно для редактирования сообщения о фиксации.
- Нажмите, чтобы включить флажок «Редактировать / разделить фиксацию» под индикатором выполнения.
- Нажмите кнопку «Изменить».
- Снимите флажки с файлов, которые вы не хотите включать в первый коммит.
- Зафиксируйте первый коммит. Затем вам будет представлен другой коммит для файлов, не включенных в первый коммит.
- После того, как все файлы будут зафиксированы, вам будет представлено диалоговое окно с запросом на другой коммит. Я не уверен, почему появляется это диалоговое окно, но я всегда отвечаю без дополнительных коммитов.
Комментарии:
1. Ваш пост был ДЕЙСТВИТЕЛЬНО ценным! Спасибо