はじめに
プログラミングバイトをしていて、自分の作業スピードが早くないのは技術不足という要因もあるが、gitの扱いに慣れていない、知識が十分にないという要因もあるということに気づいたのでgitに関するアウトプットを増やしていく。
今回の記事はバイト先で『この前出してもらったマージリクエストコンフリクト 起こしてるよ』と言われることに恐怖を覚えている人向けになっている。バイト先ではgitlabを使用しているのでプルリクエストのことをマージリクエストと呼ぶ。
コンフリクト を起こしてしまうと、業務の予定がくるってしまうのでできるだけ起こしたくない。今回の記事ではコンフリクト を起こさないための対策とコンフリクト が起こってしまった際の対処についてまとめる。
なお、コンフリクト を起こさないための対策に関しては自分も実践したことがなく、以下のサイトを参考にまとめた。
コンフリクト させないための覚書
コンフリクト とは?
コンフリクト はファイルの同じ箇所を編集したためにマージすることが出来なくなってしまう現象のことである。タイミングとしては一通りの作業を終え、マージリクエストを投げた際に起こる。
コンフリクト を起こさないためには
現在作業している作業ブランチをworking_branchとして、統合ブランチをkitchenブランチとする。
自分の作業用ブランチを切った後に統合ブランチkitchenが更新されているとマージリクエストを出す際にコンフリクト が起こってしまう可能性がある。(自分と同じ部分を編集したブランチがマージされているかもしれないため)コンフリクト を防止するための手順を示す。
作業内容をコミットする
git status
自分の作業状況の確認。
git add -p
addする。pオプションは差分を確認しながらaddすることができるのでお勧め。
git commit -m "コミットメッセージ"
コミット。
ローカルの統合ブランチkitchenを最新の状態にする
git checkout kitchen
kitchenにブランチ切り替え。
git pull
プルして最新の状態に。
git checkout working_branch
作業ブランチにチェックアウト
git merge kitchen
最新のkitchenを作業ブランチにマージ。
このタイミングでコンフリクト が起こる可能性がある。これをローカルで解消する。結局コンフリクト が起こるなら一緒じゃないかと思う人もいるかもしれないが、コンフリクト が起こるかもしれないという気持ちで投げるマージリクエストと、コンフリクト が起こらないことがわかって投げるマージリクエストでは次の業務に取り組む心持が変わってくると思う。
ここで注意しておきたいのが入力側の内容も取り込んでおかないとマージリクエストを出すときまたコンフリクト が起こってしまうので注意。
コンフリクト が起こってしまったときの対処
先ほどまではマージリクエストを投げたときにコンフリクト を出さないための対策についてまとめていたが、それでもコンフリクト が起こってしまう可能性はあると思う。ここではコンフリクト が起こってしまったときの対処について述べる。
マージリクエストを投げたらコンフリクト が発生したことを知らせる表示が出てしまった!!
このときの対処をまとめる。
ローカルのkitchenを最新にする
git checkout kitchen
git pull
git checkout working_branch
作業ブランチにマージする
git merge kitchen
ここでコンフリクト した部分がエディタに反映されるので適切にコンフリクト を解消する
addする←gitにコンフリクト を解消したことを知らせる
git add コンフリクトを解消したファイル
commit,pushする
git commit
git push origin 作業ブランチ
これで問題なければコンフリクト解消できると思う。
さいごに
コンフリクト を起こさないための対策は自分自身も業務内で実践してなんらかの知見を得ることが出来たらまた追記しようと思う。