1. ホーム
  2. git

[解決済み] Gitでプロジェクトの最初のコミットを変更しますか?重複

2022-03-17 23:45:51

質問

プロジェクトの最初のコミットで、それ以降のすべてのコミットを失うことなく、何かを変更したいのですが。これを実行する方法はありますか?

ソースコード内のコメントに誤って自分の生の電子メールを記載してしまい、GitHub をインデックスするボットからスパムを受けるので変更したいのですが。

解決方法は?

で述べたように エクドパルマ 以下 , git 1.7.12+ (2012年8月)では、オプション --root に対して git rebase :

" git rebase [-i] --root $tip "に至るすべての履歴を書き換えることができるようになりました。 $tip "からルートコミットまで。

その新しい動作は、当初 詳細はこちら :

個人的には、" git rebase -i --root を必要とせず、単に動作するようにすべきです。 --onto "し、履歴の最初のものでも "編集"できるようにしてください。
履歴の先頭付近を書き換える人は少ないので、誰も気にしないのは理解できます。

は、その パッチが続く .


(2010年2月、当初の回答)

で述べたように Git FAQ (そしてこの SO質問 )という考え方があります。

  1. 新しいテンポラリブランチを作成する
  2. を使用して変更したいコミットまで巻き戻す。 git reset --hard
  3. そのコミットを変更する (現在の HEAD のトップになり、どのファイルの内容も変更できるようになります)
  4. 変更されたコミットの上にあるブランチをリベースします。

    git rebase --onto <tmp branch> <commit after changed> <branch>`
    
    

コツは、削除したい情報が後のコミットでファイル内のどこかに再導入されていないことを確認することです。もしそうだと思われる場合は filter-branch --tree-filter を使用して、そのファイルのコンテンツが、いかなるコミットメントにおいても、良識ある情報を含んでいないことを確認します。

どちらの場合も、結局はすべてのコミットの SHA1 を書き換えることになるので、内容を変更しようとしているブランチをすでに公開している場合は注意が必要です。あなたのプロジェクトがまだ公開されておらず、あなたが書き直そうとしているコミットを他の人が参考にしていないのであれば、おそらくこの方法はとらないほうがいいでしょう。