はじめに
業務中に、メンバーから「誤って master に push してしまった」と相談されたため、その際に調査した内容と対処方法をまとめます。
この記事は個人的なアウトプットを目的として作成したものです。そのため、誤った情報や不足している内容が含まれている可能性があります。もし間違いや気になる点がございましたら、ぜひご指摘いただけますと幸いです。
現象
メンバーはVSCodeの拡張機能Git Graphを使い、masterから作業用のブランチを切って作業していました。しかし、pushした結果、変更内容が作業ブランチではなくmasterに反映されてしまいました。
通常はdevelopからブランチを切る運用ですが、今回はmasterから切る必要があり、その点は問題ではありません。
疑問だったのは、
-
誤って master をチェックアウトして作業したわけではない
-
Git Graph 上でも 作業ブランチがアクティブになっていた
それでもmasterにpushされてしまっていた、という点です。
原因
原因は 作業ブランチのupstream(追跡ブランチ)がmasterに設定されてしまっていた ことでした。
追跡ブランチは以下で確認できます。
git branch -vv
feature/hogehoge 4ab2003 [origin/master]
本来は[origin/feature/hogehoge]のように、自分自身のブランチを追跡している必要があります。
origin/masterになっていたため、pushしたときに自動的にmasterに反映された、という流れでした。
解決方法
1.誤った追跡ブランチを解除
git branch --unset-upstream
2.正しいブランチをupstreamに設定してpush
git push -u origin feature/hogehoge
これで追跡が正しくなり作業ブランチにpushされるようになりました。
終わりに
今回の件を通して、追跡ブランチの設定ミスは意外と気づきにくい ということを再認識しました。ブランチ運用ルールを見直す良いきっかけにもなりましたし、私自身も同じミスをしないように気をつけたいと思います。