На рабочем месте команда выполняет свою работу в своей собственной ветви функции, объединяет функции в развитии ветки и затем, наконец, делает вишневый выбор коммитов в производственную отрасль. Сервер обслуживает файлы из производственной ветки. Это означает, что в производственной отрасли все, что показано на общедоступном веб-сайте. Другими словами, вместо загрузки файлов через FTP команда cherry выбирает коммиты из своей ветки функций, содержащей новые файлы, в производственную ветвь, а затем делает git pull origin production
на веб-сервере для обновления файлов.Создание новых коммитов из сбор и исключение файлов из существующих коммитов?
Я не знаком с таким рабочим процессом, потому что я обычно загружаю через FTP, и у меня есть все права на загрузку только необходимых файлов. Мне было интересно, в таком рабочем процессе можно воссоздать новые коммиты, содержащие выбранные файлы, на основе существующих коммитов?
В качестве примера, скажем, я сделал 2 фиксаций, как так (Commit A
идет перед Commit B
) в MyFeatureBranch
:
Commit B:
Removed 1 line from FileA.
Added 2 lines to FileB.
Deleted FileC
Added 1 line to package.json
Commit A:
Added 2 lines to FileA.
Removed 5 lines from FileB.
Created package.json.
Как я могу создать Commit C
поверх Commit B
, содержащего объединенные изменения в Commit A
и Commit B
файлов FileA
и FileB
, но исключает файл package.json
(или даже больше файлов, чтобы исключить)?
Я не могу использовать gitignore, потому что мне все еще нужно нажать, чтобы обновить package.json
до develop
.
Мое намерение иметь Commit C
, как это так, что я могу легко сделать git cherry-pick CommitC
из MyFeatureBranch
в production
ветви, и все мои обновления (хотел и ненужные файлы) в настоящее время сдвинуты в производство. Я мог бы использовать вишню - выбираю коммиты один за другим, но package.json
все равно будет скопирован в производственную ветку, потому что он находится внутри Commit A
.
Итак, возможно ли создать новый коммит из выбранных файлов и исключить файлы из существующих коммитов?
Большое спасибо за эту идею! Похоже, это может сработать! Вы просто сказали, что я мог бы сделать git branch hashA ^, чтобы создать новую ветку из CommitA. Что означает эта каретка после хэша? – Carven
Это относится к родительскому фиксации hashA (последняя фиксация перед hashA) – lucash
@Carven Я только что узнал, что в моем ответе была ошибка. Пожалуйста, см. Мое редактирование для правильного способа проверки файлов из другой ветви. – lucash