Open3
gitの歴史改変が出来るgit filter-repo
操作を誤ってgitにパスワードを乗っけてしまった時、git resetやgit filter-branchを使うことがある。
git resetでは履歴を消してしまうので、修正してまた挙げたいときはgit filter-branchを使っていた。
ただgit filter-branchを実行すると
WARNING: git-filter-branch has a glut of gotchas generating mangled history rewrites.
とのことなのでgit-filter-repoを使ってみる。
macなら
brew install git-filter-repo
でインストール出来る。Linuxなら
wget https://raw.githubusercontent.com/newren/git-filter-repo/main/git-filter-repo && \
chmod +x git-filter-repo && \
sudo mv git-filter-repo /usr/local/bin
でインストール出来るはず
git-filter-repo --version
でversion確認
MAN
消したいファイルがindex.jsの場合でdry-runしてみる
git filter-repo --dry-run --path index.js --invert-paths
削除実行
git filter-repo --force --path index.js --invert-paths
基本的に現在作業しているブランチに対して変更を行うらしい
安全のためリモートブランチの登録が削除されるようなのでローカルのgitにremoteを設定してからpushする
git remote add origin git@github.com:<user name>/<repository>
git push -f origin main
# 必要に応じて
git push -f origin --all