目的
- ローカルリポジトリで若干やらかした際の解決方法をまとめる
実施環境
- ハードウェア環境
項目 | 情報 |
---|---|
OS | macOS Catalina(10.15.3) |
ハードウェア | MacBook Pro (16-inch ,2019) |
プロセッサ | 2.6 GHz 6コアIntel Core i7 |
メモリ | 16 GB 2667 MHz DDR4 |
グラフィックス | AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB |
- ソフトウェア環境
項目 | 情報 | 備考 |
---|---|---|
Git バージョン | 2.25.1 | Homwbrewを用いて導入 |
前提情報
- リモートリポジトリにpushする前のローカルリポジトリで操作ミスをした。
- やらかした内容
- 実施したかった作業順→
$ git add 修正ファイル
実行後$ git commit
を実行する。 - 実際に実行した作業順
$ git add 修正ファイル
実行後$ git commit --amend
を実行した。
- 実施したかった作業順→
発生した問題
- 説明のための記載
- 「すでにコミットされている最新のコミット」をコミットBとする。
- コミットBよりさらに新しい、これからコミットする予定のコミット内容Aとする。
- これからするはずだったコミット内容AのコミットをコミットAとする。
- コミットBにコミット内容Aも含まれた状態になってしまった。
やりたいこと
- コミット内容Aを含んでしまったコミットBを、修正内容そのままに無かったことにする。
- コミットBとコミットAを別々のコミットとする。
解決方法
-
下記コマンドを実行してコミットBの
$ git commit
を取り消す。$ git reset --soft HEAD^
-
下記コマンドを実行してステージング状況を確認する。
$ git status
-
コミットBが取り消された状態になる。(
$ git add
の実行直後状態になる。) -
下記コマンドを実行してコミット内容Aのステージングを取り消す。
$ git restore --staged コミット内容Aのファイルパス