Github「リモートにあなたが持っていない作業が含まれているため、更新は拒否されました」


176

新しいリポジトリを作成し、それを複製し、ファイルをディレクトリに追加しadd -A、それらをで追加し、変更をコミットしました。使用してプッシュしようとするgit push <repo name> masterと、「リモートにあなたが持っていない作業が含まれているため、更新が拒否されました」と表示されます。

これは新しいリポジトリであり、readmeファイルしか含まれていないため、これは意味をなさないようです。

回答:


307

これは、ファイルREADMELICENSEファイルを使用して新しいgithubリポジトリを初期化した場合に発生します

git remote add origin [//your github url]

//pull those changes

git pull origin master 

// or optionally, 'git pull origin master --allow-unrelated-histories' if you have initialized repo in github and also committed locally

//now, push your work to your new repo

git push origin master

これで、リポジトリをgithubにプッシュできるようになります。基本的に、これらの新しい初期化されたファイルを作業にマージする必要があります。git pullフェッチしてマージします。必要に応じて、フェッチしてマージすることもできます。


7
詳細な説明と、この問題を回避するための最初の2つの推奨方法を含むYouTubeビデオを作成しました。
Kevin Markham

16
マージコマンドについては、使用する必要がありますgit pull origin master --allow-unrelated-histories
Luciano Marqueto 2018

「致命的:無関係な履歴をマージすることを拒否します」
セルジ

4
@Sergiトライgit pull origin master --allow-unrelated-histories
palerdot

101

エラーは、コミットするコードとGitHubに存在するコードの構造が異なるために発生する可能性があります。それによって解決できる競合を作成します

git pull

解決するマージ競合:

git push

新しいコードに問題がないことを確認したら、次のコードを使用できます。

git push -f origin master

-f「強制コミット」の意味はどこですか。


13
'git push -f origin master'-これが役立ちます
Saurabh

4
git push -fは、リモート履歴をローカル履歴で上書きします。使用するときは注意してください。特に公共のリポジトリでは。
Andre

updates-were-rejectedたとえば、リモートのgithub repoに変更を加えた場合にも発生します。githubguiを使用してreadmeファイルにいくつかの変更を加えました。次に、新しい作業をgithubにプッシュしようとすると、リモートで行った変更がローカルには存在しないというメッセージが表示されます。
Deke、

13

これが最初のプッシュの場合

ただ変える

git push <repo name> master

このように変更してください!

git push -f <repo name> master

1
これにより、最初にで作成されたようなファイルが破棄されます。むしろ、git pullbeforeを使用してリモートファイルを取得し、コミットをマージします。受け入れられた回答の状態と同じように
JayJay

@jayjaybricksoftコメントありがとうございます。これは最初のプッシュなので、起点ファイルの置き換えはOKです。
Mahyar


2

提供された回答は私にとってはうまくいきませんでした。

GitHubに空のリポジトリがあり、ライセンスファイルとローカルでの単一のコミットのみが含まれていました。うまくいったのは:

$ git fetch
$ git merge --allow-unrelated-histories
Merge made by the 'recursive' strategy.
 LICENSE | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 LICENSE

また、mergeあなたがしたい前に:

$ git branch --set-upstream-to origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.

0

私はこれらのステップに従いました:

マスターを引っ張る:

git pull origin master

これにより、ローカルリポジトリとGithubリポジトリが同期されます。新しいファイルを追加してから:

git add .

変更をコミットします。

git commit -m "adding new file  Xyz"

最後に、オリジンマスターをプッシュします。

git push origin master

Githubリポジトリを更新すると、新しく追加されたファイルが表示されます。


0

Visual S2019を使用している場合は、次のように新しいローカルブランチを作成し、変更をリポジトリにプッシュします。 VS2019ローカルブランチ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.