LoginSignup
9
4

More than 1 year has passed since last update.

Pull Reqに最新のmain branchを反映してって言われたら

Last updated at Posted at 2023-03-01

pull reqを上げたら、reviewから「コードは良さそう!最新のmain branchだけ反映しといて」って言われて「???」となった人向けの解説記事です。

チームで日々開発してきてGitに慣れている先輩目線だと当たり前になってしまい、説明すらしないことが多いですが、開発初心者やこれまでチームでの開発をしてこなかった開発者は混乱することも多いと思うので、書いておきます

branchが「遅れてる」ってどういうこと?

チーム開発では複数の開発者が同時に開発します。しかし、同時に開発を行うと同じファイルを別々の開発者が変更したかった時など不都合が生じます。
そこでGitを使って、branchを分けて開発することで互いを意識することなく開発できるわけです。

この時に、main branchにすでに反映されている変更(コミット)が自分のbranchに反映されていない時に「遅れている」というわけです。

実際の開発の各段階でGitがどういう状態にあるのか?を整理していきましょう。

自分のlocal PCをmy local、他の開発者のlocal PCをtheir localと言いましょう。
最初は、remote(GitHubなど)からgit cloneしてくることで、my localtheir local共に、main branchが作られます。

image.png

それぞれのlocal PCでbranchを切り、そのブランチで開発を行いコミットしていきます。
(自分はmy-featというbranch、他の開発者はtheir-featというbranchを作ったとします)

image.png

それぞれ開発が完了したのでgit pushして、それぞれの変更をremoteにuploadしました。

image.png

このタイミングではまだremotemain branchには何も変更がないです。
ここで、それぞれの変更をmain branchに取り込むために、their-feat branchとmy-feat branchからpull reqが作られます。

さて、自分のpull req(my-featmain)がmergeされる前に他の開発者のpull req(their-featmain)がmergeされたとします。
image.png

ここで、main branchに新しく作られたcommitはmy-featには存在していません。これが「branchが遅れている」という状態です。

この状態だと、自分のpull req(my-featmain)はmergeできたりできなかったりします。他の開発者が同じ箇所を変更している場合などはconflictが発生して、mergeできません。
また、チームの方針として必ずmain branchを反映してからmergeするというルールになっていることも多いと思います。

そこで「最新のmain branchを反映しといて」って言われるわけです。

最新のmain branchを反映する方法

まず、自分のlocal PCにmain branchの最新の状態を持ってくる必要があります。
git fetchコマンドでdonwloadしてきましょう。

$ git fetch

すると、origin/mainというbranchにremoteのmainの最新の状態が反映されます。

参考: 【初心者向け】git fetch、git merge、git pullの違いについて

image.png

次に、このorigin/main branchをlocalのmy-feat branchにmergeしていきます。

$ git merge origin/main

(もしmy-feat branchにいない場合は、最初にgit checkout my-featしましょう)

image.png

my-feat branchの先頭にorigin/mainをmergeしたcommitが作られます。

ここで、my-featをremoteにpushしてあがれば、remoteのmy-feat branchに最新のmain branchが反映されました。

$ git push origin my-feat

image.png

こうなれば、main branchへのpull reqをmergeできるようになります。

9
4
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
9
4