web-dev-qa-db-ja.com

git:リモートにはローカルにはない作業が含まれているため、更新は拒否されました

私は、BitBucketでgitを使用する開発者数名のチームに取り組んでいます。リリースまでdevにプッシュするのではなく、masterブランチで作業しています。

開発者の1人が誤って自分のコードを誤って上書きしてしまったので、今は正しいコードをリポジトリにプッシュしようとしています。私は数日間このエラーを読んでいますが、次のエラーが発生しているため、レポにプッシュできません:

 ! [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で数時間探し、別の指示に従ったことを付け加えますが、Pushdevブランチに追加することはできません。

57
delos

git pull <remote> master:devremote/masterブランチをフェッチし、local/devブランチにマージします。

git pull <remote> devremote/devブランチをフェッチし、現在のブランチにマージします。

競合するコミットはremote/devにあると言ったので、それはおそらくあなたがフェッチしてマージするつもりだったブランチです。

その場合、実際にはローカルブランチに競合をマージしていませんでした。作業コピーに誤ったコードを見たと言ったので、これはちょっと奇妙です。 remote/masterで何が起こっているのかを確認することをお勧めします。

28
Jeff

ターミナルでこのコマンドを使用します

51
Donal

リモートリポジトリにプッシュしようとしているが、まだプルされていない新しいファイルをリモートで作成したときに発生します。Readmeと言います。その場合、エラーが言うように

gitは更新を拒否します

ローカル環境では更新されたリモートを取得していないためです。最初にリモートからプルしてください

git pull

ローカルリポジトリが更新され、新しいReadmeファイルが追加されます。次に、更新された変更をリモートにプッシュします

git Push Origin master
23
Himanshu

私はそれを修正しました、私は何をしたのか正確にはわかりません。私は単純に押したり引いたりしてみました:

git pull <remote> devの代わりにgit pull <remote> master:dev

彼らが同じ問題を抱えている場合、これが誰かを助けることを願っています。

6
delos

実際、githubは思ったよりもはるかに単純であり、gitリポジトリにいくつかのファイルを明示的に挿入した後でもPushを実行しようとすると必ず発生します。

:git pull

その後..

:git Push

注:リポジトリをプルした後に誤ってvimエディターで立ち往生した場合は、心配しないでvimエディターを閉じてプッシュを試してください:)

4
d337

このエラーが発生したのは、サーバーに更新があったがSourceTreeが利用可能な更新を表示していなかったためです(おそらく最後にチェックしたときにオフラインだったため)。したがって、ソースツリーを更新したところ、1つのアイテムではなく2つのアイテムがプッシュに表示されています。

必ずrefreshまたはpullこのエラーが発生してから再試行する場合。

2
1.21 gigawatts

以下を入力する必要があります。

$ git pull
$ git fetch 
$ git merge

git Push Origin master --forceを使用すると、大きな問題が発生します。

2
gaoyehua

プッシュする力

git Push -f Origin master

0
Samir Poudel

最初にSSDT VSプロジェクトがありました。 Githubに持っていたプロジェクトをプッシュしたかった。私は、Pushがmasterブランチを開始する私のレポの初期バージョンになることを望んでいました。 git Push -f Origin masterのDonalの提案は、これを達成する最も簡単な方法(私が見た)でした。何も書き直すことを心配する必要がなかったので、それは理にかなっているように思えました。

0
cromastro

これは通常、リポジトリにローカルに存在しないアイテムが含まれている場合に発生します。そのため、変更をプッシュするには、この場合、リモートの変更を統合してからプッシュする必要があります。

リモートからプルを作成します

git pull Origin master

次に、変更をそのリモートにプッシュします

git Push Origin master
0
Sravya

これを試すことができます:git pull Origin master --rebase

0
Eduardo Ramos