【问题标题】:Github "Updates were rejected because the remote contains work that you do not have locally."Github “更新被拒绝,因为远程包含您在本地没有的工作。”
【发布时间】:2013-08-22 03:14:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: github


    【解决方案1】:

    如果您使用 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 为您提取和合并。如果适合您,您还可以获取和合并。

    【讨论】:

    • 我创建了一个YouTube video,其中包含更详细的解释以及避免此问题的两种建议方法。
    • 对于合并命令我需要使用git pull origin master --allow-unrelated-histories
    • 我得到“致命:拒绝合并不相关的历史”
    • @Sergi 试试git pull origin master --allow-unrelated-histories
    【解决方案2】:

    该错误可能是因为您提交的代码结构与 GitHub 上的代码结构不同。它会产生可以通过

    解决的冲突
    git pull
    

    合并冲突解决:

    git push
    

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

    git push -f origin master
    

    -f 代表“强制提交”。

    【讨论】:

    • 'git push -f origin master' - 这有帮助
    • git push -f 用本地历史覆盖远程历史,使用时要小心。特别是在公共存储库上。
    • updates-were-rejected 如果您在远程的 github 存储库中进行了更改,也会发生这种情况,例如:使用 github gui 在自述文件中进行了一些更改。然后尝试将你的新作品推送到 github,它会显示这条消息,说你在远程所做的更改,但它在本地不存在。
    【解决方案3】:

    如果这是您的第一次推送

    只需要改变

    git push <repo name> master
    

    这样改!

    git push -f <repo name> master
    

    【讨论】:

    • 这会像最初在源中创建的一样丢弃文件。而是使用git pull 之前获取远程文件并合并您的提交。就像接受的答案状态一样
    • @jayjaybricksoft 感谢您的评论。这是第一次推送,所以替换原始文件就可以了。
    【解决方案4】:

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

    我在 GitHub 上有一个空的 repo,只有 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'.
    

    【讨论】:

      【解决方案5】:

      您可以参考:如何处理“refusing to merge unrelated histories”错误:

      $ git pull --allow-unrelated-histories
      $ git push -f origin master
      

      【讨论】:

        【解决方案6】:

        我按照以下步骤操作:

        拉主:

        git pull origin master
        

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

        git add .
        

        提交更改:

        git commit -m "adding new file  Xyz"
        

        最后推送origin master:

        git push origin master
        

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            问题是因为本地没有与 master 分支保持同步,这就是为什么我们应该在将代码推送到 git 之前拉取代码

            git add .
            git commit -m 'Comments to be added'
            git pull origin master
            git push origin master
            

            【讨论】:

              【解决方案9】:

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

              使用git push -f origin master 代替git push origin master 来强制更新。

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

              【讨论】:

                猜你喜欢
                • 2021-07-30
                • 2022-01-08
                • 2020-08-07
                • 2018-03-29
                • 2018-08-16
                • 2016-11-08
                相关资源
                最近更新 更多