リモートリポジトリにpushしたファイルの一部を削除する方法

誤って作業内容と無関係のファイルをpushしてしまったときの修正方法。

リモートリポジトリにpushしたファイルの一部を削除する方法


# 別のブランチで作業中は一旦退避
$ git stash
$ git stash list // 退避できてるか確認

# 対象ブランチに切り替える
$ git branch feature_hoge

# 戻りたい地点を確認のハッシュ値を確認
$ git log --oneline
x1y2z3 今回の作業が完了 // ここでファイルを追加したので
a1b23c 前の作業が完了   // ここまで戻りたい

# ファイルの変更はそのままにコミットを取り消す
#    --hard にすると作業内容(ファイルの変更)ごと消えるので注意
$ git reset a1b23c --soft

# addされているファイルを確認
$ git status

# 指定のファイルをaddから外す
$ git reset HEAD file_name

# 再度コミット
$ git commit -m "コメント"

# リモートリポジトリにpushする
#     ローカルとリモートで不整合が起きるので -f で強制的に上書き
$ git push -f origin feature_hoge

# もとの作業ブランチに戻る
$ git checkout feature_fuga

# 退避していた作業内容を戻す
$ git stash pop    // 最新の退避内容を復元 & 退避データは消す
$ git stash apply  // 最新の退避内容を復元 & 退避データを残す

参考

間違ってremoteにpushしたファイルを削除したい時

git add を取り消す

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です