I believe you do need master branch on your local to resolve issues like merge conflict etc. You can create a pre-commit hook which will prevent any commit to master branch. The master branch will then only accept changes through pull requests.
Committing to a detached head is risky because if you change branches you'll need to use reflog to retrieve it. However a branch name can be added at any time
Well I would not recommend this flow in general and suggest pull requests. However the main flow for not having master is optimized for is starting working. Instead of
I believe you do need master branch on your local to resolve issues like merge conflict etc. You can create a pre-commit hook which will prevent any commit to master branch. The master branch will then only accept changes through pull requests.
You could resolve merge conflicts with
origin/master
without having amaster
up to dateHaving master on my local helps me to fix merge conflict which requires manual intervention.
How would you resolve a merge conflict using origin/master? Seems scary to me. I've always done it manually like @firoz states.
Committing to a detached head is risky because if you change branches you'll need to use reflog to retrieve it. However a branch name can be added at any time
Git branch foo
Git switch - -detach origin/master
Git merge mybranch
Git commit
Git push origin HEAD:master
git checkout master
git pull
git merge mybranch
git push
Seems simpler.
(Actually, for the second step, I use git up, which does pull --rebase=merges --autostash --prune for even more convenience)
Well I would not recommend this flow in general and suggest pull requests. However the main flow for not having master is optimized for is starting working. Instead of
Git switch master
Git pull --ff-only
Git switch -c mybranch
It is
Git fetch
Git switch -c mybranch origin/master
Or
git fetch
git rebase -i origin/master
instead of
git switch master
git pull --ff-only
git switch mybranch
git rebase -i master
And if you must merge on master, but you don't have a local master.
Git fetch
Git switch -c master origin/master