Open3

git stash pop でconflictした時にpopを無かったことにする

ふじしろふじしろ
  1. 競合している変更のうち、元の状態のコミットを復元する
$ git checkout --ours .

参考:git checkout解説 - Qiita

checkout:リポジトリの指定したバージョンを取り出す(復元する)
--oursオプション:別のブランチからマージされているファイル(※今回の場合はstashからpopされたファイル)のバージョンではなく、現在のブランチにあるファイル(※今回の場合はpopによりコンフリクトが発生する前のファイル)のバージョンを指定するオプション。
.:カレントディレクトリを指し、カレントディレクトリ以下の全てのファイルを対象にする

つまり、「カレントディレクトリ配下の全てのファイルを対象に、popによるコンフリクト発生前のバージョンの状態を取り出す(復元する)」という処理をしている。

  1. ステージング環境の処理を作業ディレクトリ(ワークツリー)まで戻す
$ git reset

参考:第6話 git reset 3種類をどこよりもわかりやすい図解で解説!【連載】マンガでわかるGit ~コマンド編~ - itstaffing エンジニアスタイル

※ 引数がない場合のresetは--mixedと同等。(ワークツリーまで戻す)

  1. ワークツリーを削除する(当初の状態に戻る)
$ git checkout .

git chekout <pathspec>:カレントディレクトリ下のステージされていない変更を全て取り消す
https://ja.stackoverflow.com/questions/52581/git-checkout-とは

(原文)Overwrite the contents of the files that match the pathspec.
(DeepL)パス指定に一致するファイルの内容を上書きする。

※ここまでやるとpopした内容が消えてしまうので、popの内容をstashに戻したい場合はここで再びgit stashしておくと良さげ。

ふじしろふじしろ

そもそもここで言う「checkout」ってどう言う意味?
ホテルのチェックアウトとか支払いとかとは違うはず。

https://e-words.jp/w/チェックアウト.html

IT分野では、一部のバージョン管理システムで利用者が編集のためにリポジトリから特定ファイルの特定の版を手元に取り出す操作を操作をこのように呼ぶことがある。