I found this and this. But it seems that both these turn all the commits in the development branch into commits on the master branch.
What if I just want to say "what is now the tip of my development branch should become the new tip of the master branch, i.e. the next master branch commit from the last common commit between the two branches".
So basically an unconditional merge, where all conflicts are disregarded in favour of the tip development commit.
Bearing in mind that this is my own project, and no-one else is involved.
Edit
I tried the solution from chepner and got this
(doc_indexer) mike@M17A:/.../doc_indexer$ git cherry-pick my_dev_branch
Auto-merging tests/basic_tests/test_indexing_task.py
CONFLICT (content): Merge conflict in tests/basic_tests/test_indexing_task.py
Auto-merging src/core/visual_log_table_classes.py
Auto-merging src/core/main_window_class.py
CONFLICT (content): Merge conflict in src/core/main_window_class.py
Auto-merging src/core/indexing_task_class.py
CONFLICT (content): Merge conflict in src/core/indexing_task_class.py
error: could not apply d777951... ATG. [... my commit messaage for the tip commit on the dev branch]
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
... then cancelled the cherry-pick operation.
There's got to be a simple answer to this, and I can't believe I'm the first person to have wanted to do this!