Gitでプルリクエストを受けたのですが
状況が少し分かりづらいです。
- 質問者さんがレビュワーで、今回のひどいプルリクエストをレビューして直してほしい
- 質問者さんがプルリクエストを作った側で、先輩のレビュワーにボロクソ書かれた
上記で取るべき手段が変わってきます。
1なら他人の作ったコミット履歴を勝手に改竄する事は危険なので、
プルリクエストを作った作業者さんとペアプログラミングするなりして対処してください。
さて、2だったと仮定して話をすすめていきます。
まずどれを選ぶかの軸になりますが、
プルリクエストは「○○機能の開発しましたよ、確認後取り込んでください」という要望です。
要望自体が的外れであったなら兎も角、挙動は要望どおりで、コードが汚い程度なら跳ね除けてクローズというのは微妙ですね。
どうせ全く同じプルリクエストがもう1個生えてきてプルリクエストの履歴を汚す事になるので……
ここは同じプルリクエストを使いつつ、
「きれいに修正してもう一度もってこい」という要望を出して修正させる形にするのが良いでしょう。
次に「どの程度の酷さ」かにもよりますが、
コミット履歴を改ざんするほどでもない軽微な指摘ならば
普通に追加のコミットを積み上げる3の手法で十分です。
3.リモートブランチ(origin/foo)は削除せず、次のコミットでリファクタリングし、再度pushする。
そしてそれじゃちょっと辛いやらかしがあった場合、
私が職場でやっている手法は3を改良した感じですね。
GitHubのプルリクエストは開いたまま、
全く別のコミット履歴をgit push -f origin foo
という風に-f
の強制プッシュを使って上書きすることが出来ます。
また、それに伴いプルリクエストの履歴に「強制プッシュを使って全く別のコミット履歴を上書きしました」という趣旨のメッセージが追加で表示されます。
一度foo
ブランチのコミットをrebaseで潰すか、
git reset
とやってファイルの状態を維持しつつmasterのコミット履歴まで戻り、
改めてfoo
ブランチをキレイな状態に構築しなおします。
コマンドの流れを使って解説するとこんな感じ。
bash
1$ git branch
2* foo
3 master
4
5# なにはともあれコミット履歴が消し飛んでも良いようにバックアップ
6$ git checkout -b tmp
7$ git checkout foo
8
9# fooブランチのコミット履歴をmaster相当まで戻す
10$ git reset master
11
12# エディタで開いてリファクタリングを行う
13$ git add .
14$ git commit -m "fix: fooモジュールの開発"
15
16# forceオプションをつけてプッシュ
17$ git push -f origin foo
18
19# 不要になったtmpブランチを削除
20$ git branch -D tmp
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/01 04:28