きり丸の技術日記

技術検証したり、資格等をここに残していきます。

IntelliJ IDEAで必要なファイルだけをrevertしたい(revert selected)

コミット全体をRevertするのではなく、特定のファイルだけをRevertかけたい時の操作を記載します。

環境

  • IntelliJ IDEA
    • 2022.3.3

対応

GitタブでRevertしたいコミットログを探し、対象のファイルを右クリックします。

選択した変更を元に戻すを選択すると、特定のファイルだけRevertします。

間違えやすい点

特定のファイルだけをRevertをかけたいユースケースは、ファイルの修正履歴を見てからその修正が適切であったかを判断し、結果として特定のファイルだけが誤っていたことが判明したのでRevertをすると思います。

ただ、ファイルの履歴から追えるのは特定のファイルのコミットログだけです。あくまで、コミットログから対象のファイルを右クリックする必要がありますので、影響を受けるすべてのファイルを表示をクリックして、それから選択する必要があります。

このコミットをRevertを選択するとコミット対象をRevertしてしまいますので注意してください。

終わりに

この機能自体は知っていたのですが、機能を利用するための画面が分からなかったので、あらためてまとめました。

Revertで意図しない破壊も起こるので、安全に処理するためにはRevertではなく、この記事を元にしたコミットを重ねたほうが安全かもしれません。

参考情報t

Git Rebaseするときに自動でstashとstash popするオプションや設定(autostash)

Git Rebaseをする際に、ローカルの修正が残っている場合はgit stash, git stash popをしないと実行できません。

毎回そのコマンドを入力するのは面倒ですが、オプションや設定でstashコマンドを実行せずに済むのでそれを記事にしました。

環境

  • git version 2.24.1.windows.2

対応

--autostashオプションを付与してください。または、常に実行したい場合はrebase.autostashをtrueに設定してください。

# 実行時にオプションを付与する
git rebase main --autostash

# 常にauto.stashをするようにする
git config --global rebase.autostash true

もし、git configに設定したあとでautostashを実行しない場合は、次のオプションを付与するとstashしなくなります。

git rebase main --no-autostash

終わりに

この機能を知ったのは--autostashのオプションだけでしたが、git configに設定することで常に有効にすることが分かりました。

自分でちゃんと調べてみるのも大事ですね。

参考情報

画面全体はportrait(縦)なのにiframeで最小化を実装したらlandscape(横)で判定された

タイトルの出オチ記事。

前提

  • Chrome
    • 2023/05/02時点

原因

  • portrait, landscapeは画面のwidthとheightの縦横比で決まる
  • iframeの画面サイズは親画面サイズに依存しない

上記2つの原因により、iframeで作られた画面を最小化(ヘッダだけ見える状態にする)すると、縦横比が変わるためlandscapeとして判定されます。

対応

landscapeとして処理される前提で、目的の処理のみ動くように回避します。

次のCSS Media Queryは、スマートフォンでlandscapeにした時にはメッセージが表示されるが、PCやタブレットを含めたそのほかでは何も表示されないようにする設定です。実際の状況に寄りますがヘッダの高さ分のmin-height: 50pxを設定することで、iframeの中で最小化を実装しても目的の処理だけが動くようになりました。

@media screen and (min-height: 50px) and (max-height: 428px) and (max-width:928px) and (orientation: landscape) {
    /* スマートフォンのlandscapeのメッセージ */
}

ソースコード

  • なし

終わりに

iframeで処理を実装することがあまりなかったため、仕様を把握しておらずにハマっていました。親画面とiframeは独立しており、iframeから親画面の情報を取得しようとするとCORS Policy違反が発生することもある等々の仕様も知りませんでした。

フロントの知識が弱くてすぐに忘れそうですので、備忘録として残しておきます。