いくつかの履歴を失わないようにするには、最初にあなたのリポジトリのコピーを取ってください:)。ここで私達は行く:(<f>
あなたがコミット新しいルートになりたいコミットfはSHAです)
git checkout --orphan temp <f> # checkout to the status of the git repo at commit f; creating a branch named "temp"
git commit -m "new root commit" # create a new commit that is to be the new root commit
git rebase --onto temp <f> master # now rebase the part of history from <f> to master onthe temp branch
git branch -D temp # we don't need the temp branch anymore
あなたが同じ切り捨て歴史を持ちたいリモートを持っている場合。 git push -f
を使用できます。 警告これは危険なコマンドです。これを軽く使ってはいけません!コードの最後のバージョンがまだ同じであることを確認したい場合は、 git diff origin/master
を実行できます。変更は表示されません(履歴のみが変更され、ファイルの内容は変更されないため)。
git push -f
次の2つのコマンドはオプションです。git repoを良好な状態に保ちます。
git prune --progress # delete all the objects w/o references
git gc --aggressive # aggressively collect garbage; may take a lot of time on large repos
['rebase'](https://git-scm.com/docs/git-rebase)は履歴を変更するためのツールです。 – Maroun
解決したい問題は何ですか? –