DEV Community

Discussion on: Git TIP - Why you should not keep a local master branch ?

Collapse
 
firozansari profile image
Firoz Ansari

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.

Collapse
 
slashgear_ profile image
Antoine Caron

You could resolve merge conflicts with origin/master without having a master up to date

Collapse
 
firozansari profile image
Firoz Ansari

Having master on my local helps me to fix merge conflict which requires manual intervention.

Thread Thread
 
dietertroy profile image
Troy

How would you resolve a merge conflict using origin/master? Seems scary to me. I've always done it manually like @firoz states.

Thread Thread
 
jessekphillips profile image
Jesse Phillips • Edited

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

Collapse
 
jessekphillips profile image
Jesse Phillips • Edited

Git switch - -detach origin/master

Git merge mybranch

Git commit

Git push origin HEAD:master

Thread Thread
 
mvz profile image
Matijs van Zuijlen

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)

Thread Thread
 
jessekphillips profile image
Jesse Phillips • Edited

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