3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

git pushしてプルリクエストを送る前にすること

Last updated at Posted at 2021-03-10

概要

 自分が与えれたタスクをいったん終わると$ git pushしてプルリクを送り、レビューを行ってもらうことが一般的な開発フローである。共同開発をしている場合、developブランチは更新される可能性があり、自身の作業ブランチに更新されたdevelopブランチを反映する必要がある。その際、自分が変更したソースコードに対して誰かが変更を加えていた場合、コンフリクトが生じる。自身のソースコートに対して、developブランチを反映し、コンフリクトが生じた場合、コンフリクトを解消して、プルリクを送る方法を考える。今回は、rebaseを用いてソースコードを反映する方法を考える。

想定の状況

  • featureブランチを切った時(作業を開始する際)
      B' feature
     /
A---B develop
  • プルリクエスト送る時(作業が終わった時)
      B'---C---D feature
     /
A---B---E---F develop

手順

1. リモート追跡ブランチの更新

$ git fetch

2. developブランチの変更箇所を自身のfeatureブランチに反映

$ git rebase origin/develop

3. コンフリクトが生じた場合(生じなければスキップ)

3.1 どちらのコードを採用するのかをしゅどうで選択する

コンフリクトが生じた該当ファイル
<<<<<<< HEAD
# featureブランチでの変更内容
・・・
=======
# developでの変更内容
・・・
>>>>>>> develop

この際、<<<<<<< HEAD,======,>>>>>>>> developも手動で削除してもらっても大丈夫である。

3.2 $ git add .
3.3 $ git rebase --continue
ここで、コミットメッセージの編集する画面になるときがありますが、通常で特に変更する必要はないと思います。書き換える必要がある場合は適宜編集してください。

コンフリクトがすべて解消されるまで3.1~3.2を繰り返す。

すべてのコンフリクトがなくなるとコミット履歴は以下のようになる。

              C'---D' feature
             /
A---B---E---F develop

4. ローカルリポジトリをリモートリポジトリに反映

$ git push

5. プルリクエストの作成

 GitHub等でプルリクエストを作成します。

6. マージしてもらう

 プルリクエストが承認されマージされたら、コミット履歴は以下のようになる。

A---B---E---F---C'---D' develop

最後に

 今回は、rebaseを用いてやる方法について述べた。
間違っている個所があればコメントしていただけると幸いです。

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?