简体   繁体   中英

How to use git feature branches with live updates and merge back to master?

I have a production website where master is checked out and a development webiste where I develop in feature branches.

When a feature is merged into master I do this on the development site:

(currently on the new-feature branch)
$ git commit -m"new feature finished"
$ git push
$ git checkout master
$ git merge new-feature
$ git push

And on the production site:

(currently on master branch)
$git pull

This works for me. But sometimes the client calls and needs a small change on the website quickly. I can do this on production on master and push master and this works fine.

But when I use a feature branch for the small change I get a gap:

(On production on branch master)
$ git branch quick-feature
$ git checkout quick-feature
$ git push origin quick-feature
$ edit files...
$ git add .
$ git commit -m"quick changes"
$ git push # until this point the changes are live
$ git checkout master #now the changes are not live anymore GAP
$ git merge quick-feature # now the changes are live again
$ git push

I hope I could make clear the intention of this workflow. Can you recommend something better?

if your quick-feature branch is developed on top of master, you could reset the master branch while still being in the quick-feature branch:

git branch -f master

That way, you avoid the checkout master which removes temporarily from your working tree the quick-feature.

x--x--x  (master)
       \                          => x--x--x--f--f--f--f (master, quick-feature)
        -f--f--f (quick-feature)

Another solution, when you switch back to master, is to ask for a merge

 git checkout --merge master

That allows you to keep quick-feature modification while taking into account the current state of master.

"making the change on production" is just plain wrong, you shouldn't be doing that.

The correct workflow would be: - checkout master on a test/devel site/sandbox/server/whatever - make change, test change - commit change, merge into master, deploy in production

that's what branches are for. You could even make your workflow more automatic by using hooks in git that will automagically deploy in production everything you 'git push' to a specific branch, which may be the master one or another dedicated branch.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM