LoginSignup
14
16

More than 5 years have passed since last update.

プルリクを分けて出す方法3パターン

Posted at

Gitを使い始めた頃、「プルリクを分けて」と言われて困ってたけど、知らない間にできるようになってた。
私のPRの出し方にはだいたい3パターンある。

  • ローカルブランチを分けてpushしていく方法
  • ローカルブランチ一本でpushしていく方法
  • cherry-pickを使って、同じブランチ上のcommitを分けてPRを出す

注意点

だいぶざっくりとしか書いていないので、参考程度にしてください。
特に git reset --hardcherry-pick は使い方を間違えるとものすごく面倒なことになったりするので。

ローカルブランチを分けてpushしていく方法 (おてがる度 ★★★★★)

いちばんシンプルでわかりやすい方法。

メリット

pushするときに手元(ローカル)のブランチとリモートのブランチの名前が一致しているので、混乱しない。

デメリット

手元のブランチが増えて煩雑になる。ブランチの削除が邪魔くさい。

手順

//typoブランチを作成
git checkout -b typo

//ブランチの起点先を指定したい場合は-bの前に指定
git checkout origin/master -b typo

//commitしたら自分のリポジトリにpushしてtypoブランチを作成(今回の場合、リモート名はshonoで登録済み)
git push shono typo

これで自分のリポジトリに typo ブランチが作成されるので、GitHubでPRを出す。

ローカルブランチ一本でpushしていく方法 (おてがる度 ★★★)

いちばんよくやる方法。

メリット

手元のブランチが一本で済む。PhpStorm > Version Control > Log がすっきり見やすくなる。

デメリット

pushし忘れて reset --hard したら終わるので注意が必要。

手順

//自分の今いるブランチを確認(今回はmaster)
git branch

//作業してcommitしたら、masterブランチをtypo2ブランチとして自分のリモートジポジトリに作成
git push shono master:typo2

これで自分のリポジトリに typo2 ブランチが作成されるので、GitHubでPRを出す。
で、

//先ほどの作業開始点の一つ前のcommit番号までreset --hardで戻す。
git reset --hard abcdef

これでmasterブランチがクリーンな状態に戻る。

cherry-pickを使って、同じブランチ上のcommitを分けてPRを出す (おてがる度 ★)

ブランチの切り替え or ブランチのリセットを忘れて作業してしまった場合。

メリット

「ブランチを複製して、reset --softをして不要なファイルだけをRevertしてcommitして...」といった作業なしにブランチを分けられる。

デメリット

事故りやすい。

手順

masterブランチにある連続したcommitを分けたい場合。(例 commit番号 aaabbb/cccddd)

//origin/masterを起点としてブランチ作成
git checkout origin/master -b dev

//devブランチにcheckout
git checkout dev

//欲しいcommit番号をcherry-pickする
git cherry-pick aaabbb

これでdevブランチに aaabbb のコミットがくっついた形になるので、あとは「ローカルブランチを分けてpushしていく方法」に則ってPRを出していくだけ。

14
16
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
14
16