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”,并且放置在工作树中的副本将是new_name,而不是original_name。
当然,如果您的情况更复杂,脚本可能会变得更加复杂 - 您可以仅查找某些扩展名(将它们添加到限制awk模式中),甚至可以在perl脚本中捕获整个输出,以便您可以轻松执行一些更高级的逻辑...
没有直接简单的方法可以做到这一点。虽然可以管理,但会有很多痛苦(git并不是为此而设计的)。
如果您请求Heroku提供一种从部署中排除某些文件的方法,则可能会更容易。