GitHubのログにあるmaster, origin/master, staging, origin/staging を横一列にキレイに並べる方法
GitHubのログがあまりにも汚くて困っております。このブランチ名を横一列にキレイに並べる方法はどうすればいいのでしょうか?コミットグラフが枝分かれしないようにしたいと考えています。
staging でテストして結果が問題なければmasterに上げるようにしています。今のところソースコード自体にstaging とmasterに違いはありません。
現在の状態はこのようになっております。
$ git graph
* 7e3b98e (HEAD, origin/master, origin/HEAD, master) Merge branch 'staging'
|\
| * 6151ba5 (origin/staging, staging) Fix purchased job
| * dcf83c1 Merge branch 'staging' of github.com:KlujePteLtd/kluje into staging
| |\
| | * b1e059a Hide section testimonials
| | * a1e6763 Fix initializers/carrierwave
* | | c5a607a Merge branch 'staging'
|\ \ \
| |/ /
| * | a4bf0ea Fix initializers/carrierwave
以前まではgit rebaseを使って以下のように横一列にしておりました。履歴は全て一直線(時に分かれても2つまで)でした。
$ git graph
* 8da8fde (HEAD, origin/HEAD, origin/master, origin/staging, master, staging ) Add find_matches test
* 8b1aa58 Fix inviter Serializer
* 0c6daa1 Add venue invitation
* 7bd9478 Add byebug rails-erd gems
* d03ab72 Add find_matches test into RSpec User Model
* 928032a Add positive_sort into User Model
どこかのタイミングで混沌とした状況になり、それ以降はgit rebaseを使ってもまったくキレイにならなくなり
手をかければかけるほど汚くなっていきます。
基本的なGit作業はこのようにしておりました。
$git branch
> staging
$git push origin staging
(staging環境にて動作確認)
$git fetch
$git rebase origin/master
$git checkout master
$git merge staging
$git push origin master
どうすればいいのでしょうか?
回答を元に作業を繰り返した結果
* c88832e (HEAD, origin/master, origin/HEAD, staging, master) The last change
* 7e3b98e Merge branch 'staging'
|\
* \ c5a607a Merge branch 'staging'
|\ \
* | | c0c4d7e Fix initializers/carrierwave
| | | * 48f91d5 (origin/staging) The last change
| | |/
unaristさんの回答とリンク先のスライドなどを何度も読み返すのですが、どうしてこんな結果になってしまうのかどうしてもよく分からないです。何度も申し訳ないのですが、なんとか解決方法を教えていただけないでしょうか?
この状態で
$ git push origin staging
をすると
! [rejected] staging -> staging (non-fast-forward)
の警告が出ます。