For very simple patches that are known to be distinct from patches worked on by other people, git-pull --rebase
may be sufficient to overcome the problem with diamond commits messing with the history. For any type of meaningful development the recommendation for Starlink is to always use a feature branch and handle merging/rebasing in the branch before fixing up master. Git is designed to make branching trivial so we should make use of the facility. It's almost no additional work to work on a development/feature branch (it's known as a "feature" branch because the concept is that each feature you add is kept conceptually distinct in the history).
% git branch dev
% git checkout dev
< edits and commits>
Meanwhile origin/master has had some changes so bring them into your repository
% git checkout master
% git pull