90

--depth=1パラメータを使用すると、プロジェクトを新しいリポジトリにプッシュできなくなることに注意してください。

4

3 に答える 3

78

あなたはすることができます

git clone <git_url>

フォルダから .git リポジトリを削除します。これにより、すべての履歴が削除されます。

あなたができること

git init 

これにより、まったく新しい git プロジェクトが作成されます。

これは最善の方法ではないかもしれません。しかし、これは機能します。それが役に立てば幸い。

于 2015-04-20T13:06:56.017 に答える
40

履歴が完全に失われても問題ないと考える限り、Ajay が提案したアプローチは完全に有効です。ただし、浅いクローンの履歴を維持したい場合は、別の提案があります。


浅いクローンは、いわゆるグラフト ポイントを使用して「最初の」コミットの親を偽装することで、完全な履歴を持っているふりをします。完全な履歴が利用可能であると仮定すると、次の質問を言い換えることができます:特定のリビジョンの前に履歴を破棄するにはどうすればよいですか?

git filter-branchこれは、グラフトポイントと(リンクされた質問で示唆されているように)の組み合わせを使用できることを意味します。ただし、これにより完全な履歴が書き換えられ、新しい履歴が最初に複製したリモートと互換性がなくなることに注意する必要があります. このため、リポジトリから古いリモートを削除する必要があります。

git remote remove <old-remote-name>

これで、書き換えを開始できます。現在のマスターをリポジトリの新しいルートにコミットさせたいとしましょう。

git rev-parse --verify master >> .git/info/grafts
git filter-branch -- --all

これにより、現在のマスターコミットを新しいルートとして、リポジトリの完全な履歴が書き換えられます。の「バックアップ」参照を削除することで、書き換えを完了することができますrefs/original.git/shallowさらに、ファイルを削除できるようになりました。

これが完了すると、移植されていない履歴を新しいリモートにプッシュできるようになります。

于 2015-04-20T14:01:00.757 に答える