0

我在 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 生成的自述文件除外)。

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

4

2 回答 2

1

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

git pull --rebase origin master
git push

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

于 2013-02-15T15:49:46.307 回答
0

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

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

$ git push --force origin master

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

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

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

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

要不就

$ git checkout master
$ git pull --rebase

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

于 2013-02-15T16:03:46.993 回答