One of the things that frustrated me about Kirby last year was handling code/template changes vs content changes. I complained about it here.
Ideally, since Kirby is a PHP CMS, I would do everything directly on the server. What I’ve done more often instead, is to run a full copy locally and rsync the final product (code, blueprints, content, images, etc.) to the production instance. Content is kept in plain text files, so both code and content changes need to be kept in sync.