LoginSignup
1
2

More than 5 years have passed since last update.

リポジトリの最初の作業をプルリクエストにする

Last updated at Posted at 2017-08-11

やりたいこと

書いたコードをプルリクエストでレビューしてもらうとコード差分にインラインで指摘を書いてもらえて捗るが、そのためには

  • デフォルトブランチから分岐した feature ブランチに作業内容をコミット
  • feature ブランチからデフォルトブランチへのプルリクエストをつくる

とする必要があり普段はそうしていました。しかし新規リポジトリを作ったときに気を抜いていたため

  • リポジトリを新規作成して最初のコミットからコードを入れてしまった
    • 親コミットがないので差分として見れない
  • 最初の作業もプルリクエストでレビューしてもらいたい
    • featureブランチで作業してなかった

となってその対処を考えました。実際には「空コミット上にリベース」の手順を採用。

手順の前提

  • デフォルトブランチ名: master
  • プルリクエストのマージ元ブランチ名: feat-XX
  • リモート名: origin
  • master ブランチを checkout している

(案1) 空コミット上にリベース

手順

  1. git checkout -b feat-XX (変更を feat-XX ブランチに退避)
  2. git branch -d master (master ブランチを削除)
  3. git checkout --orphan master (親コミットなしのブランチを作成してチェックアウト)
  4. git reset --hard (インデックスをクリア)
  5. git commit --allow-empty (空コミットを作成)
  6. git checkout feat-XX (変更を退避させていたブランチをチェックアウト)
  7. git rebase master (空コミット上にリベース)
  8. git push origin feat-XX (リベースしたものをプッシュ)
  9. git checkout master (空コミットのみの master ブランチをチェックアウト)
  10. git push origin master --force (プッシュ)
  11. feat-XX から master へのプルリクエストを作る

Pros

  • レビュー対象のコミット単位を維持できる

Cons

  • master の rewrite が必要

(案2) 全消し

手順

  1. ソースツリー上のファイルを全て消す
  2. git commit -a (空のソースツリーをコミット)
  3. git push origin master (空になったものをプッシュ)
  4. git checkout -b feat-XX (ブランチ作成)
  5. git revert HEAD (空にしたものを巻き戻してコミット)
  6. git push origin feat-XX (プッシュ)
  7. feat-XX から master へのプルリクエストを作る

Pros

  • master の rewrite が不要

Cons

  • レビュー対象が1コミットになってしまう
  • 後から見たときに何のために revert したのかわかりにくい
1
2
1

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
1
2