私はこれを正確に行うために自分のgitエイリアスを作成しました。呼んでるgit freebase
!既存の乱雑でリベースできない機能ブランチを取得して再作成し、同じ名前の新しいブランチにして、コミットを1つのコミットに押しつぶし、指定したブランチ(デフォルトではマスター)にリベースします。最後に、新しく「フリーベースの」ブランチに好きなコミットメッセージを使用できるようにします。
.gitconfigに次のエイリアスを配置してインストールします。
[alias]
freebase = "!f() { \
TOPIC="$(git branch | grep '\\*' | cut -d ' ' -f2)"; \
NEWBASE="${1:-master}"; \
PREVSHA1="$(git rev-parse HEAD)"; \
echo "Freebaseing $TOPIC onto $NEWBASE, previous sha1 was $PREVSHA1"; \
echo "---"; \
git reset --hard "$NEWBASE"; \
git merge --squash "$PREVSHA1"; \
git commit; \
}; f"
次のコマンドを実行して、機能ブランチから使用します。
git freebase <new-base>
私はこれを数回しかテストしていないので、まずそれを読んで、実行することを確認してください。少しの安全対策として、開始sha1を出力するので、問題が発生した場合に古いブランチを復元できるはずです。
私はそれをgithub上の私のdotfilesリポジトリで維持します:https :
//github.com/stevecrozz/dotfiles/blob/master/.gitconfig