2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitHubに誤ってpushしてしまったものを取り消す方法(reset)

Last updated at Posted at 2021-09-05

#reset(対象のコミットをコミットログから削除)の使う場合

  • チーム開発の場合には無かったことにするため極力使わない
  • 使用する場合は自分ひとりで触っている状態など
  • passなどを上げてしまった時

##リモートリポジトリから完全に消し去る手順
####1. ログを確認しログIDを取得
####2. 適したreset方法(3種あり)を実行
####3. push

##3種の取り消し方法

$ git reset --soft コミットID      commitを取り消し
$ git reset --hard コミットID      commitとaddとソースを取り消し
$ git reset --mixed コミットID     commitとaddを取り消し
  • git reset --mixedを実行した場合

    • コミットIDを指定し、リモートリポジトリ上のコミット・addを取り消し、push前の任意の状態まで戻す(ローカルリポジトリ上のソースコードは残る)
  • VSコード上のresetしたいbrunchのログの確認

  • ターミナル上でgit log --onelineを実行(各logの詳細を確認したい場合は、 $ git logを実行)

$ git log --oneline
  • 実行結果(下から上にいくほど新しいlog情報)
x86_64 itonoMacBook-Air$ "[~/training_project/training_project  test *]$ git log --oneline
574c160 (HEAD -> test, origin/test) test_5です。
92de579 test_4です。
16015ec test_3です。
a684537 test_2です。
7416e6d test_1です。
b88bfac test test test
コミットID    コミット内容
      ↓                     ↓
16015ec      test_3です。
  • 実際の画面 (log情報から抜ける時はターミナル上でwqと入力)
    スクリーンショット 2021-09-05 3.17.44.png

  • 下記の部分が最新のlog情報
    スクリーンショット 2021-09-05 4.29.16.png

####戻したい任意のコミットIDを指定

  • 赤枠の16015ec test_3です。まで戻したい場合
    スクリーンショット 2021-09-05 3.55.22.png

  • コミットID 16015ecを指定しgit reset --mixed 16015ec を実行

$ git reset --mixed 16015ec
Unstaged changes after reset:
M       test.txt
  • 実際の画面
    スクリーンショット 2021-09-05 4.21.37.png

  • logを確認

$ git log --oneline
x86_64 itonoMacBook-Air$ "[~/training_project/training_project  test *]$ git log --oneline
16015ec (HEAD -> test, origin/test) test_3です。
a684537 test_2です。
7416e6d test_1です。
b88bfac test test test

実際の画面(ちゃんと最新のコミットが16015ec test_3です。まで戻っている)
スクリーンショット 2021-09-05 4.14.11.png

##ローカルブランチを戻したところでpush

  • git push -f origin ブランチ名を実行
"x86_64 itonoMacBook-Air$ "[~/training_project/training_project  test *%]$ git push -f origin test
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/ITO9875/training_project.git
 + 437284f...16015ec test -> test (forced update)

※注:git reset後に修正した内容を普段通りgit push origin ブランチ名のようにpushすると、以前のコミットとコンフリクト(作業が重複)してエラー(画像a参照)となり、pushできない
(git push origin ブランチ名 を git push -f origin ブランチ名とし、'-f'を記述することによって強制的にpushしている)

画像a:git push origin ブランチ名実行時の実際のエラー画面
スクリーンショット 2021-09-05 4.07.13.png

##GitHub・VSコード reset前後

  • GitHub

reset実行前
スクリーンショット 2021-09-05 4.18.01.png
reset実行後
スクリーンショット 2021-09-05 6.17.47.png

  • VSコード

reset前
スクリーンショット 2021-09-05 6.11.27.png

reset後
スクリーンショット 2021-09-05 4.14.20.png

#reset --mixed ログID を実行した結果
・GitHub上のcommitとadd削除
・ローカルリポジトリ上ではソースコードは消えない

##その他のコミット削除方法
####revert(対象のコミットを打ち消すためのコミットを行う方法)

  • 履歴を残しつつ取り消す

などがある(今後調べる)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?