1

以前のコミットをすべて削除し、最新のコミットのみを保持して、コミット履歴をクリーンアップしたいと考えています。git でそれを行うにはどうすればよいですか? 私は試しました

git rebase -i..しかし、それは血で終わり、頭を切り離してしまうようです.. git prune --expireどちらもうまくいかないようです。

1から10までのコミットがあるとすれば、10番目のコミットは手元に置いておきたいと思います。これはすべてローカルです。そのため、プッシュすることに決めたとき、プッシュするのは 10 だけです。

4

1 に答える 1

3

手順はgitbookに記載されています:

スカッシュコミット

インタラクティブなリベースツールを使用して、一連のコミットを取得し、それらを1つのコミットにまとめることもできます。スクリプトは、リベースメッセージに役立つ指示を入れます。

#
# Commands:
#  p, pick = use commit
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#

「pick」または「edit」の代わりに「squash」を指定すると、Gitはその変更とその直前の変更の両方を適用し、コミットメッセージをマージします。したがって、これら3つのコミットから1つのコミットを作成する場合は、スクリプトを次のようにします。

pick f7f3f6d changed my name a bit
squash 310154e updated README formatting and added blame
squash a5f4a0d added cat-file

いくつかのコミットを1つにまとめたくないが、実際にはコミットを完全に削除したい場合は、スクリプトで指示されていることを実行してください。

# If you remove a line here THAT COMMIT WILL BE LOST.
于 2012-12-27T12:14:35.987 に答える