●現象
エラーが出て、pushが出来ない
●エラー内容
error: failed to push some refs to "~~"
●原因は?
コンフリクトが出来ていたのをgit lab上で直したため、
リモート上のコミット履歴と、ローカルでのコミット履歴に差ができてしまいエラーが起きている。
以下のような状況です。
■ローカル
コミット履歴B(レビューの修正事項)
コミット履歴3
コミット履歴2
コミット履歴1
■リモート
コミット履歴A(コンフリクトの解消)
コミット履歴3
コミット履歴2
コミット履歴1
●対処法は?
今回は以下の手順で解決しました。
①修正作業をしたローカルの[sample_branch]をコピーし、[sample_branch_copy]を作成
②ローカルの[sample_branch]を削除
③リモート上の[sample_branch]をローカルに反映(コンフリクト解消したコミット履歴Aを獲得)
④コピーした[sample_branch_copy]から、修正作業を取り出す
⑤新しく反映したローカルの[sample_branch]に、取り出した作業内容も追加反映
⑥[sample_branch]を改めてコミット、pushする
●操作コマンド
git branch sample_branch_copy
# コピーを作成
git branch -d sample_branch
# ローカルのブランチを削除
git fetch
# リモートブランチをローカルに反映(リモートのsample_branchを取得)
git reset --soft HEAD^
#コミットを取り消し、作業中の状態に戻す(直線のコミットの取消)
git stash
# 修正した作業を取り出す
git stash pop
# 修正した作業内容を反映
git branch
git log
# 上記コマンドでブランチ・コマンドの状況を常に確認する
●エラーを今後起こさないためには、、、
今回のケースでは、git lab上でコンフリクトを修正したため起こってしまいました。
そのため、今後はローカル上でコンフリクトを修正することで回避することが可能です。