#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です。
####戻したい任意のコミットIDを指定
$ git reset --mixed 16015ec
Unstaged changes after reset:
M test.txt
$ 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です。
まで戻っている)
##ローカルブランチを戻したところで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 ブランチ名
実行時の実際のエラー画面
##GitHub・VSコード reset前後
- GitHub
- VSコード
#reset --mixed ログID を実行した結果
・GitHub上のcommitとadd削除
・ローカルリポジトリ上ではソースコードは消えない
##その他のコミット削除方法
####revert(対象のコミットを打ち消すためのコミットを行う方法)
- 履歴を残しつつ取り消す
などがある(今後調べる)