現場では実際どうなの?
force pushは、使う場面があるのか?
最近業務でGitLabでバージョン管理をしているプロジェクトで、Androidのgradleファイルをupdateして、commit & pushをしたのですが不要なバイナリファイルまで含まれていました。
コミットを書き換える必要が出てきました。revertを使う場面があったのですが、force pushでも良いとのことで試してみたところ問題なく動いていました。
今回はどのように対応したかご紹介します。
コミットをまず戻す。
git reset --mixed HEAD^
不要なバイナリファイルなどを削除する。
コミットして、force pushする。
git add path/to/your/needed/files
# もしくはまとめて
git add .
git commit -m "必要なファイルだけ再コミット"
force pushを対象のリモートブランチに行う。
git push origin branch-name --force
これを行うことによって、リモートのブランチの履歴を上書きして必要な3ファイルしか編集していない状態で、pushできました。
git reset –mixed HEAD^ を使えば、コミット履歴だけを巻き戻して、ファイルはそのまま扱えます。
–force pushは他の人と作業している場合、注意が必要です。協業中なら –force-with-lease を検討。