ここでは、技術的に間違っていること以上にあなたに影響を与えるいくつかの誤解があるかもしれないと思います。
まず、通常、マスターブランチに直接コミットしないでください。あなたの状況を説明した方法から、それが起こっているかどうかはわかりませんが、もしそうなら、それをしないようにしてください。
何かが完全にマスターにマージできない場合は、マスター自体で問題を解決しないでください。代わりに、機能ブランチで問題を修正する必要があります。問題を修正したら、マスターに完全にマージすることができます。
リベースは、遠隔地のリポジトリにプッシュするまで完全にリベースすることができます。リモートリポジトリに何かをプッシュすると、あなたは他の人の歴史を台無しにしているので、あなたはrebaseしたくないし、gitは本当にあなたのためにそれを解決することはできません。だから、リベースを恐れず、いつ使うべきか、それを使用しないことを知っているだけです。
問題を解決するためにここでリベースすることができます(また、問題のブランチをリモートでプッシュしなかったと仮定します)。クリーンにマージできないフィーチャブランチをマスタにリベースし、マスター。これにより、そのブランチで問題を解決するように強制されます。それが解決されたら、マスターへのマージは簡単です(マスターがその間に再び変更されない限り)。そして、あなたはきれいにマスターにマージすることができます。
gitには多くのチュートリアルが用意されていますし、役立つ素晴らしいコード例もあります。ここでは、より古典的なものの1つですが、私はここで説明したワークフローがうまくいくと考えています。 http://nvie.com/posts/a-successful-git-branching-model/
私はそこでワークフローを半自動化しようとする 'git flow'という名前のbashスクリプトセットを推奨していません(これらのスクリプトは試してもうまく機能しませんでしたが)そこに記載されているうまく機能