0
0

リモートリポジトリにpush済みの直前のコミットとローカルのステージにある修正(未コミット)を一つにまとめてpush

Posted at

筆者が遭遇したシチュエーション(例)

ある機能追加をするタイミングでprettierの導入をしたが、prettier分のコミットと、機能追加のコミットを分けようと思った。

  • 直前のコミット
    • ファイルAのprettier適用差分
  • 現在の状況
    • ファイルBに処理追加。保存時prettierが適用され、両方の修正が混ざった状態になった
    • ファイルBのprettier分を直前のコミットに混ぜて、機能追加は別途コミットしたい

対応

本説明ではvscodeとコマンド両方の操作が混ざっているが、以下のように対応した

1.ファイルBを行単位でコミットする

vscodeのgit(ソース管理)の「変更」でファイルBを選択すると、左右で差分表示される。
右ペインの変更部分の左に

→
+

このようなボタンが出るので、prettierの変更行のみ「+」をクリックしてstageに移していく。
試してはいないが、調べたところコマンドの git add -p に相当する操作と思われる。
そうすると、変更分のみステージに上がる。
prettier分すべてステージに上げたらターミナルで下記実行する。

$ git commit --amend --no-edit

--amend オプションは直前のコミットに変更を追加し、--no-edit オプションはコミットメッセージをそのままにする。

vscodeの場合は、cmd + shift + p をして、amend と入力すると Git: Commit Staged (Amend) というのが出てきて、おそらくこれを選択すれば良さそう。(未検証)

そしたらローカルの直前のコミットに含めることができるので、以下コマンドで強制的にpushする。

$ git push --force-with-lease

prettier分のコミットをまとめてpushすることができた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0