227

我创建了一个新的仓库,克隆了它,将文件添加到目录中,添加了它们add -A,提交了更改,当我尝试使用推送时,git push <repo name> master我得到:

提示:更新被拒绝,因为远程包含您在本地没有的工作。这通常是由另一个存储库推送到相同的 ref 引起的。您可能希望在再次推送之前先合并远程更改(例如,提示:'git pull')。

这似乎没有意义,因为它是一个新的仓库并且只包含一个自述文件。

4

9 回答 9

385

如果您使用README和/或LICENSE文件初始化新的 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为您提取和合并。如果适合您,您还可以获取和合并。

于 2013-08-20T07:02:03.793 回答
135

该错误可能是由于您提交的代码结构与 GitHub 上存在的代码结构不同。它会产生冲突,可以通过以下方式解决

git pull

合并冲突解决:

git push

如果您确认您的新代码一切正常,您可以使用:

git push -f origin master

其中-f代表“强制提交”。

于 2016-01-02T18:57:36.873 回答
19

如果这是您的第一次推动

只是改变

git push <repo name> master

改成这样!

git push -f <repo name> master
于 2018-07-16T08:11:12.683 回答
15

您可以参考:如何处理“拒绝合并无关历史”错误:

$ git pull --allow-unrelated-histories
$ git push -f origin master
于 2019-08-30T15:57:36.623 回答
3

提供的答案对我不起作用。

我在 GitHub 上有一个空的仓库,只有 LICENSE 文件和一个本地提交。起作用的是:

$ 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'.
于 2019-04-13T20:12:37.840 回答
1

我按照以下步骤操作:

拉大师:

git pull origin master

这会将您的本地存储库与 Github 存储库同步。添加新文件,然后:

git add .

提交更改:

git commit -m "adding new file  Xyz"

最后推送origin master:

git push origin master

刷新你的 Github repo,你会看到新添加的文件。

于 2020-04-18T06:29:23.253 回答
1

在我推送最后一次提交后,我直接在 repo 中手动编辑了几个文件,结果得到了同样的错误。

而不是git push origin master用来git push -f origin master强制更新。

如果您确切地知道 repo 中发生了什么变化并且您 100% 确信您希望本地提交替换所有内容,那么只会建议您这样做。我的项目是一个业余项目,没有其他人在做,除了手动更改之外,没有任何其他设备进行过其他提交。

于 2021-12-14T02:38:26.927 回答
0

如果您使用的是 Visual S2019,请创建一个新的本地分支,如下所示,然后将更改推送到存储库。

VS2019 本地分支

于 2020-04-28T16:23:03.023 回答
0

问题是因为本地与主分支不是最新的,这就是为什么我们应该在将代码推送到 git 之前拉取代码

git add .
git commit -m 'Comments to be added'
git pull origin master
git push origin master
于 2020-12-11T10:48:52.097 回答