Вы можете сохранить вторую ветвь для развертывания в Heroku, которая не содержит ни одного из этих файлов, но все еще сливается с master. (Конечно, вам придется разработать систему для разрешения конфликтов слияния, возникающих при изменении файлов .ai и .psd в master).
Конкретная вещь, которую вы спрашиваете, невозможна, по той простой причине, что при нажатии вы передаете точные коммиты из одного репозитория в другой, и два коммита, которые не имеют одно и то же дерево, по определению являются разными коммитами.
Подсказка: в последних версиях git есть опция --porcelain
для git status
, которая позволяет легко анализировать такую информацию, как «M file1», «DU file2» (мы изменили и удалили / удалили, соответственно). Вы можете написать оболочку git-merge для вашей ветки развертывания, которая пытается выполнить слияние и автоматически очищает ожидаемые конфликты:
git checkout deploy
if ! git merge master; then
git rm $(git status --porcelain | awk '/^DU/ {print $NF}')
fi
(Причина, по которой я напечатал $NF
вместо $2
, заключается в том, что если файл переименовывается, он будет выглядеть как «DU original_name -> new_name», а копия, помещенная в дерево работы, будет иметь новое имя, а не имя-оригинала .)
Конечно, сценарий может стать более сложным, если ваша ситуация такова: вы можете искать только определенные расширения (добавить их в шаблон ограничения awk) или даже захватить весь вывод в сценарии perl, чтобы вы могли легко выполнить некоторые действия. более причудливая логика ...