1. ホーム
  2. ギット

[解決済み] ローカルにない作業がリモートに含まれているため、更新が拒否された

2022-03-03 12:39:17

質問

BitBucket上でgitを使用している開発者数名とチームを組んで仕事をしています。私たちは全員 dev ブランチにプッシュするのではなく master リリースまで

開発者の一人が誤ったコードをコミットしてしまい、誤って私のコードを上書きしてしまったので、今、正しいコードをレポにプッシュしようとしています。数日前からこのエラーについて読んでいますが、次のようなエラーが発生するため、もうレポにプッシュすることができません。

 ! [rejected]        master -> dev (fetch first)
error: failed to push some refs to 'https://[email protected]/repo_user/repo_name.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

指示に従うと pull しかし、その後、マージの競合が発生しました。マージの競合に対するメッセージを入力した後、私のローカルコードは、他の開発者が偶然にアップロードした誤ったコードになっています (予想されるように pull ). そこで、不正なコードをコミット前にコピーしたバックアップに置き換え、再度プッシュしようとすると、同じエラーが表示されます。

本当に悔しいです。本当にチームを助け、貢献したいのに、このエラーのせいでできません。どなたか、この問題を解決する方法をご存知でしょうか?どんな助けでもとても感謝します。

これらは、私がコミットするために実行したコマンドです。

git pull remotename master:dev
git add --all
git commit -m "some message"
git pull remotename master:dev
git push remotename master:dev

この順番を守れば、マージの衝突は起きないと思っていたのですが。私が間違っていたようです。ありがとうございました。

更新しました。 GoogleやStackOverflowで数時間調べ、様々な指示に従いましたが、まだできません。 push から dev というブランチを作成します。

解決方法は?

git pull <remote> master:dev を取得します。 remote/master ブランチにマージし、自分の local/dev ブランチを作成します。

git pull <remote> dev を取得します。 remote/dev ブランチを作成し、それを現在のブランチにマージします。

競合するコミットが remote/dev ということで、おそらくフェッチとマージを意図したのはそのブランチでしょう。

この場合、あなたは実際にローカルブランチにコンフリクトをマージしていないことになり、作業コピーで間違ったコードを見たということなので、ちょっと変な感じです。 で何が起こっているのかを調べてみるとよいでしょう。 remote/master .