gitでmasterの今の状態を保持したまま、過去に遡って新たな変更を加えたい場合

最終更新日:2020年1月7日 Git

masterで作業をしているときに、今の状態を保持したまま、過去のコミットに遡って変更を加える方法についてまとめる。

まず、現在のコミットの状態がこちら。

ここで、今の状態を保存しておく退避用のブランチnextを作る。

そして、以下コマンドにてmasterの状態をversion-0.1まで戻す。

git reset –hard version-0.1

これで、masterがversion-0.1の状態に戻った。

次に、ブランチをnextに切り替えて、状態を確認する。

nextでは、masterをresetする前の状態が保存されている。

再度masterに戻り、テキストに変更を加える。

この後、add,commitを行い、masterの状態を確認。

 

 

最後にpushを行い、masterの変更をリモートに反映させる。

無事リモートが変更された。

あとは、nextに切り替えて、続きの作業をすすめる。

ただし、その前にコミットID:18554bcの’作業環境’のコミットは、作業環境を保持するための一時的なコミットだったので、git resetでこの一つ前の状態に戻しておく。

 

 

 

ここで、このままmasterに切り替えようとすると、以下のように切り替える前に、コミットするようにとのエラーが出る。

error: Your local changes to the following files would be overwritten by checkout:
alice_new_file.txt
Please commit your changes or stash them before you switch branches.
Aborting

そこで、いったんaddして、git commit –amendにより、新たなコミット履歴を作らずに、コミットを完了させる。

すると、問題なくmasterに切り替えられる。

 

 

 

 

 

コメントを残す

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