貢献したい github プロジェクトのプルリクエスト対応パッケージにいくつかのコミットを押しつぶそうとしていますが、使用してgit rebase -i master
も期待するオプションが得られません (StackOverflow および他の場所での読み取りに基づく)。コミットをスカッシュしようとしたのは初めてなので、おそらく何かが足りないだけです。
プロジェクトの歴史は、次のようなものです。
# On branch master
git pull origin master
git fetch upstream
git rebase upstream/master
git checkout -b feature
git commit -m "some work"
git commit -m "a little more work"
git commit -m "finishing up feature"
git checkout master
git pull origin master
git fetch upstream
git rebase upstream/master
git checkout feature
この時点で、オリジン/マスターまたはアップストリーム/マスターに変更はありません。そのため、機能ブランチをリベースしなくても、オリジンとアップストリームの両方に線形です。するとgit rebase -i master
、ポップアップするエディターに私のコミットがリストされず、完全に空白になり、リベースの出力はSuccessfully rebased and updated refs/heads/feature
.
私は私が使用できることを知っています
git checkout master
git merge --squash feature
しかし、そうするとすべての履歴が失われるというのが私の理解です。
私が望むことを達成する別の方法はありますか、それとも明らかなものを見逃しているだけですか?
アップデート
私が期待しているのは、機能ブランチで作成したコミットが一覧表示されたエディターで、選択するものとスカッシュするものを選択できます。実際に表示されるのは空のエディターです。これは、現在のブランチがマスター ブランチに対して線形であるため、何もリベースする必要がなく、エディターにコミットが表示されないのではないかと考えさせられます (ただし、上記の成功メッセージの代わりに、「nothing to rebase」のようなメッセージ)