1

私は他の同様のトピックでここにあるいくつかの提案に従い、コミットをリベースしようとしました:

git rebase --onto master~5 master~1 master

しかし、私は欲しいものを手に入れることができません(しかし、それはおそらく私の能力がないためです)。

今、私が欲しいのは、すべてのコミットを削除し、ファイルを削除して初めて投稿する場合のように、ファイルの最後のバージョンのみを維持することです。

いくつかの要点のコミットを削除したいと思います。本当に私は最後のバージョンだけに興味があります。

本当に、私は、リビジョンを保存せずに、最終的な1つのバージョンのみを維持する、ペーストビンのような要点を使用したいと思います。

要旨を削除して別の要旨を作成できることは知っていますが、可能であれば、リンクを変更しない方がよいでしょう。

4

1 に答える 1

4

1つのファイルについてのみ以前の履歴をすべて破棄しようとしていて、そのファイルが他のファイルを変更するコミットで使用されている場合rebaseは、(おそらく)必要です。リポジトリ全体のすべての履歴を破棄したい場合は、次の2つのオプションがあります。

HEADを、現在の作業ディレクトリをツリーとして使用して、新しい親のないコミットに設定します(git checkoutには、同様のことを行う--orphanオプションがあります)。

$ TREE=$( git show -s --format='%T' HEAD )
$ HEAD=$( echo initial commit | git commit-tree $TREE )
$ git reset $HEAD

これを行った後も、以前のすべてのコミットはオブジェクトとしてアクセスできますが、それらを取得するために作業する必要があります。それらを参照するブランチやタグがある場合、それらは存続しますが、参照されていない場合、最終的にガベージコレクターによって破棄されます。

または、gitリポジトリを吹き飛ばして最初からやり直します。

$ cd $( git rev-parse --show-cdup )   # Go to top level directory
$ rm -rf .git
$ git init
$ git add .
于 2012-07-17T14:34:05.177 に答える