プロジェクトの最初のコミットで何かを変更したいのですが、その後のコミットはすべて失うことはありません。これを行う方法はありますか?
ソース コード内のコメントに誤って生のメール アドレスを記載してしまいましたが、GitHub をインデックスするボットからスパムメールが届くようになったため、変更したいと思います。
ベストアンサー1
前述の通りecdpalma 下に、git 1.7.12 以上--root
(2012 年 8 月)以下のオプションが強化されましたgit rebase
:
「git rebase [-i] --root $tip
」を使用して、「」までの履歴すべてを$tip
ルートコミットまで書き換えることができるようになりました。
その新しい行動は当初ここで議論された:
個人的には、「
git rebase -i --root
」は「 」を必要とせずに動作し--onto
、履歴の最初のものでも「編集」できるようにすべきだと思います。履歴の
一番最初の部分を書き直す人は、そうでない場合に比べてずっと少ないので、誰も気にしないのは理解できます。
のパッチが続く。
(元の回答、2010 年 2 月)
前述の通り、Git に関するよくある質問(この質問です)、アイデアは次のとおりです。
- 新しい一時ブランチを作成する
- 変更したいコミットまで巻き戻すには、
git reset --hard
- そのコミットを変更します(現在のHEADの先頭になり、任意のファイルの内容を変更できます)
次を使用して、変更されたコミットの上にブランチをリベースします。
git rebase --onto <tmp branch> <commit after changed> <branch>`
重要なのは、削除したい情報が、後でコミットしたときにファイルのどこかに再導入されていないことを確認することです。その疑いがある場合は、filter-branch --tree-filter
そのファイルの内容に、いかなるコミットにも意味のある情報が含まれていないことを確認します。
どちらの場合も、すべてのコミットの SHA1 を書き換えることになります。そのため、コンテンツを変更するブランチをすでに公開している場合は注意してください。プロジェクトがまだ公開されておらず、他の人が書き換えようとしているコミットに基づいて作業を行っていない限り、おそらくこれを行うべきではありません。