はじめに
CodeCommitリポジトリの作業ブランチがメインブランチに遅れてしまっている場合に対処した方法を説明する。
問題
業務でメインブランチから作業ブランチを切り、その作業ブランチをローカルにクローンして作業をしていた。
作業が完了し、作業ブランチをCodeCommitにPUSH。
今回は検証のために作業ブランチをソースとしてCodeBuildでビルドを行った。
すんなりビルドが終わるだろうと思っていたが、まさかの失敗。
ビルドログを見てみると、今回の修正箇所とは関係ないエラーが発生していた。
どうやら、ブランチを切ったタイミングのメインブランチに不具合があったようで、その不具合が原因でビルドに失敗していた。
メインブランチではすでに不具合が解消されているため、作業ブランチにその反映を取り込みたい。
イメージはこんな感じ。
解決方法
今回は簡易的な例で説明していく。
メインブランチを「main」、作業用ブランチを「feature/work」として聞いていほしい。
ローカルのfeature/workブランチのディレクトリ構造は下記。
まずはブランチの状態を確認。
git status
status状態がきれいであれば何もする必要なし。
作業用ブランチで作業中の場合はスタッシュを実行。
git stash save 作業用ブランチにメインブランチの情報を取り込むために一時退避
mainブランチに移動し、pull。
git pull
mainブランチにリモートのmainブランチの情報が反映される。
feature/workディレクトリに戻り、mainブランチの内容を反映させる。
git rebase main
たしかにmainブランチの情報が反映されていると確認できる。
スタッシュしていた内容を反映させる。
git stash apply stash@{0}
おわりに
「mainブランチをpullして最新化し、そこから新たにブランチを切って変更箇所を反映」という方法もある。
今回の方法と比べてみて、自分が良い方を選択してみてください。