■mainブランチ
メインブランチ。基本的には現在サーバーで運用されているデータ。このブランチに直接コミットはせずに下のdevelopブランチをマージするだけ。
■developブランチ
開発用メインブランチ。細かい修正がコミットされる
■featureブランチ
機能追加・改修などを行う作業ブランチ。完了後はdevelopブランチにマージされて、featureブランチは削除される
いきなり、未経験者が3つのブランチを使い分けるのは難しいので、まずはなんでもかんでもmasterブランチにコミットする、1本道のブランチモデルで作業を進め、慣れてきたら、開発開始時点でmasterブランチからdevelopブランチを作成し、作業内容は全て自身の作成したブランチにコミットし、最終的にmasterからマージしましょう。

- mainブランチのクローンを作成
- developブランチを作成しdevelopブランチに移動後プッシュ
- developブランチ上で作業を進める
- developブランチ上での作業終了後、masterブランチに移動し、developブランチをマージし、プッシュ
- マージした不要なブランチを削除
エラーが出た時の対処方法
実際にはケース・バイ・ケースで色々な方法がありますが、強制的にローカルデータをプッシュする方法が「git push -f」です。ただこれは言わば歴史を書き換えてしまうので、チームで共有しているブランチで行う時は注意が必要です。
参考サイト