我创建了一个新的仓库,克隆了它,将文件添加到目录中,添加了它们add -A
,提交了更改,当我尝试使用推送时,git push <repo name> master
我得到:
提示:更新被拒绝,因为远程包含您在本地没有的工作。这通常是由另一个存储库推送到相同的 ref 引起的。您可能希望在再次推送之前先合并远程更改(例如,提示:'git pull')。
这似乎没有意义,因为它是一个新的仓库并且只包含一个自述文件。
我创建了一个新的仓库,克隆了它,将文件添加到目录中,添加了它们add -A
,提交了更改,当我尝试使用推送时,git push <repo name> master
我得到:
提示:更新被拒绝,因为远程包含您在本地没有的工作。这通常是由另一个存储库推送到相同的 ref 引起的。您可能希望在再次推送之前先合并远程更改(例如,提示:'git pull')。
这似乎没有意义,因为它是一个新的仓库并且只包含一个自述文件。
如果您使用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
为您提取和合并。如果适合您,您还可以获取和合并。
该错误可能是由于您提交的代码结构与 GitHub 上存在的代码结构不同。它会产生冲突,可以通过以下方式解决
git pull
合并冲突解决:
git push
如果您确认您的新代码一切正常,您可以使用:
git push -f origin master
其中-f
代表“强制提交”。
如果这是您的第一次推动
只是改变
git push <repo name> master
改成这样!
git push -f <repo name> master
您可以参考:如何处理“拒绝合并无关历史”错误:
$ git pull --allow-unrelated-histories
$ git push -f origin master
提供的答案对我不起作用。
我在 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'.
我按照以下步骤操作:
拉大师:
git pull origin master
这会将您的本地存储库与 Github 存储库同步。添加新文件,然后:
git add .
提交更改:
git commit -m "adding new file Xyz"
最后推送origin master:
git push origin master
刷新你的 Github repo,你会看到新添加的文件。
在我推送最后一次提交后,我直接在 repo 中手动编辑了几个文件,结果得到了同样的错误。
而不是git push origin master
用来git push -f origin master
强制更新。
如果您确切地知道 repo 中发生了什么变化并且您 100% 确信您希望本地提交替换所有内容,那么只会建议您这样做。我的项目是一个业余项目,没有其他人在做,除了手动更改之外,没有任何其他设备进行过其他提交。
问题是因为本地与主分支不是最新的,这就是为什么我们应该在将代码推送到 git 之前拉取代码
git add .
git commit -m 'Comments to be added'
git pull origin master
git push origin master