【问题标题】:Error pushing to GitHub using Git for Windows使用适用于 Windows 的 Git 推送到 GitHub 时出错
【发布时间】:2013-01-31 15:14:54
【问题描述】:

我在 GitHub 上创建了一个 Git 存储库,也创建了一个本地存储库。首先,我将远程存储库拉入本地存储库。然后我添加了一个文件,暂存文件,提交它,现在我尝试再次推送到远程存储库,但失败并显示以下消息:

推送到 https://github.com/jjenkov/java-utils
到 https://github.com/jjenkov/java-utils
 ! [拒绝] master -> master(非快进)
错误:未能将一些参考推送到“https://github.com/jjenkov/java-utils”
提示:更新被拒绝,因为您当前分支的尖端落后
提示:它的远程对应物。合并远程更改(例如“git pull”)
提示:在再次推动之前。
提示:有关详细信息,请参阅“git push --help”中的“关于快进的说明”。

我对 Git 和 Github 完全陌生,所以也许我做错了什么。我已将远程存储库“获取”到本地存储库,尽管远程存储库应该是空的(GitHub 生成的自述文件除外)。

有谁知道问题出在哪里,或者我可以在哪里阅读解决方案?

【问题讨论】:

    标签: git github


    【解决方案1】:

    远程仓库不为空;它包含您可能通过 GitHub Web 界面创建的 README。你必须先拉它,然后才能推它:

    git pull --rebase origin master
    git push
    

    --rebase 不是绝对必要的,但可以避免丑陋的合并提交。)

    【讨论】:

      【解决方案2】:

      非快进推送意味着远程master 不是本地master 的祖先。 Git 拒绝将推送作为一种安全机制来防止破坏工作。

      git log --graph --decorate --pretty=oneline --abbrev-commit --all 的输出将为您提供存储库历史的图形描述。如果您确定不介意替换或销毁 GitHub 中的内容,请运行

      $ git push --force origin master
      

      --force 选项记录为(特别强调)

      -f--force
      通常,该命令拒绝更新不是 用于覆盖它的本地 ref 的祖先。此标志禁用 支票。 这会导致远程仓库丢失提交; 小心使用。

      要保留现有内容,您需要在 GitHub 上的本地 master 基础上重新设置基础,然后推送结果。

      $ git fetch
      $ git rebase origin/master master
      $ git push origin master
      

      或者只是

      $ git checkout master
      $ git pull --rebase
      

      上面的序列是晴天的情况。您可能需要解决冲突,但根据您的描述,这似乎不太可能。

      【讨论】:

        猜你喜欢
        • 2023-03-16
        • 2015-10-28
        • 2016-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-30
        相关资源
        最近更新 更多