All your changes should be merged except changes to those values, which makes them not like the others, not changes to intrinsic content but deployment-specific changes. Those might be best applied in the post-checkout hook. Here’s a sample, a per-branch include processor
cat <<\EOF >.git/hooks/post-checkout
#!/bin/sh
if branch=`git symbolic-ref HEAD --short -q`; then
for file in `git ls-files -cix*.@branch`; do
echo "* making ${file%.@branch} from $file with branch-specific includes"
echo '/^@include-branch-specific ([a-z/]*)$/ { s//cat \1.'$branch'/e }' \
| sed -rf- $file >${file%.@branch}
done
fi
EOF
chmod +x .git/hooks/post-checkout
# testing
git checkout beta
cat <<\EOF >config.@branch
// ==UserScript==
@include-branch-specific config
// ==/UserScript==
EOF
echo >config.stable '// @downloadURL -- StableURL File Location'
echo >config.beta '// @downloadURL -- BetaURL File Location'
git add config.*
# git rm --cached config
git commit -m'setting up per-branch configs'
git checkout
git checkout stable
git cherry-pick beta
git checkout