質問: gitで、とあるブランチ(今回はmaster)で作業をしていた時にcommitをします。 この時、前回pullして以降に、同branchに他者がcommitしてると、pushする前にpullしなさいと促されます。 で、pullすると、mergeが動くんですが、その時の樹形図は以下のようになると思います。 e.g.) redmineの場合 !git branch commitする前にpullしてやっていれば、このような樹形図でなく、まっすぐな樹形図になると思います。 そこで知りたいのは、この分岐してしまった樹形図をまっすぐな樹形図にしてやる方法です。 commitを取り消してやった後、最新の状態に自分の変更を適用してやれば、そうできることは分かるんですが... この作業を、何か簡単な手順で行うことが出来ないのか?と思った次第です。 何か簡単な方法で対応できるのでしたら教えていただけると幸いです。 よろしくお願いします。
回答: 同様の趣旨の質問がこちらにありました: * Git - Auto rebase while pushing - Stack Overflow 以下のコマンドでエイリアス設定を行えば、 ``` git config alias.goodpush '!git pull --rebase=preserve && git push' ``` 以降、`git goodpush`を実行すれば自動でrebaseした後pushするようになります。 最終的な形を確認することなくremoteリポジトリに反映してしまうので、個人的には微妙な対応かと思います... `git pull`時の自動mergeを止めることで煩わしさは低減するかもしれません。(上記のエイリアスが実行している内容を手動で行います) > > で、pullすると、mergeが動くんですが、 > > > のタイミングで、単に `git pull` でなく、オプションを付与し `git pull --rebase=preserve`とすれば、mergeでなくrebaseで変更が統合されます。 この `--rebase=preserve` オプションを付けた挙動を `git-pull` のデフォルト動作としたい場合には、 コンフィグ設定で`pull.rebase` に `preserve` をセットします。 ``` git config --global pull.rebase preserve ``` 参考: * `git-pull` * `git-config`