Strategies of merging master

So if I’m working in a branch, let’s call it feature-foo, that was initially based of master. And I’m continuously adding many commits to it.

So my question is: maybe I’m doing something wrong? Is there an easier way to handle that all?
What is the best way of dealing with changing master?
Should I always try to rebase and squash commits before merging any other branches into mine? Because apparently it’s not recommended to squash commits after you merge things from other branches.

We’re not using git-flow. As I understand it – I can’t use it for my own benefit, entire group has to agree to use it, right?
What are your thoughts?

upd: Of course I forgot to mention that I can’t push into orgin/master (that’s how our github repo configured). Any merges to master should go through pull requests.
So you see, that even if I make something small in my local branch, in order to have a PR accepted, I would have to merge/rebase master onto it. But master by that time could already have way more and in reality it makes it simpler to rebase/merge my branch into master (rather than other way around). But since I can’t push master to origin, I have to create a temporary branch (based off of master) and then merge/rebase my changes onto that, and create a PR based on that temporary branch.

  • Include testing framework in git repo?
  • What is the difference between pull and clone in git?
  • Can't type password in Git Bash
  • Is it any git able text editor for MAC?
  • git rebase already merged branch?
  • Why can't I push to GitHub using cygwin?
  • One Solution collect form web for “Strategies of merging master”

    If the features are small enough, I’d opt to rebase and merge with the “no fast-forward” (–no-ff) option when its time to check in. It is a matter of preference – I prefer to keep master clean by ensuring that there are no overlapping branches.

    enter image description here

    FYI, to visualize your tree and all your branches:

    git log --oneline --graph --all --decorate=short
    Git Baby is a git and github fan, let's start git clone.