Это просто и чисто.
Вы бы создали ветку развертывания, например:
> git checkout deployment-1234
Теперь вы можете внести изменения, специфичные для развертывания. Как только это будет сделано, зафиксируйте его:
> git commit -as
Вернитесь в свою главную ветку.
> git checkout master
Сразу же слейте ветку развертывания. Это изменит вашу основную ветку с этими изменениями, специфичными для развертывания, но не волнуйтесь, мы отменим ее.
> git merge --no-ff deployment-1234
Чтобы отменить изменения, просто проверьте файлы перед слиянием и зафиксируйте их с исправлением.
> git checkout HEAD^ .
> git commit --amend
Вот и все. Теперь git считает, что файл изменяется при первой фиксации развертывания-1234, как это уже было рассмотрено мастером и признано неподходящим. Таким образом, он никогда не добавит эти изменения в основную ветку, даже если вы попытаетесь объединить всю ветку развертывания-1234 с главной. (Попробуй!)
Я также использую другой метод в проекте, который требует лучшего контроля. Плохо то, что вы можете создать конфликт во время будущего слияния развертывания-1234 с master. Это нормально, если эти слияния выполняются вручную. Но если вам нужно автоматическое слияние, лучше, если я смогу предотвратить этот систематический конфликт. Поэтому вместо этого я создал сценарий, который может применять и отменять изменения, относящиеся к развертыванию. Тогда сами изменения не обязательно должны быть в репозитории, вместо этого то, что появляется в репозитории, будет этим скриптом.
person
Isaac To
schedule
03.04.2018