为什么Git要求我在推动前拉?

时间:2015-11-01 02:34:54

标签: git github

我在GitHub上设置了一个新的存储库,并试图推动它,但是Git不断给我一个错误说:

  

错误:无法将某些引用推送到......

我最终尝试先拉,然后推,然后工作。但为什么呢?

4 个答案:

答案 0 :(得分:29)

您提到您正在创建新的存储库。

虽然答案和评论也是如此,但您可能是唯一与该资源库交互的人。您需要拉,因为您在GitHub上使用README 初始化了存储库this is likely the tutorial you followed)。

如果您没有使用README初始化存储库,这意味着GitHub没有首次提交' README.md',您将拥有一个可以直接推送到的完全空的存储库。

GitHub拥有该选项的原因最有可能帮助启动新项目的用户(例如您自己)通过拉动在GitHub上设置存储库后轻松上手/ clone并进行初始提交,允许您快速添加新文件并推送。

此外,通过使用自述文件初始化存储库,您将准备好克隆并开始跟踪文件的主分支。在完全空的存储库中,您将收到来自Git的通知,如:

warning: You appear to have cloned an empty repository.

如果没有初始化,您稍后还必须第一次明确地推送您的第一次提交以使用git push origin master来掌握,因为Git会礼貌地告诉您:

No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
Everything up-to-date

总结一下,是第一次提交(请参阅您的提交,并且您将看到第一个README提交)阻止您在不拉动的情况下推送,因为您的本地存储库是与GitHub上的存储库不同步。

答案 1 :(得分:6)

这样,其他人进行的任何并行编辑然后签入都会进入您的开发环境进行合并和测试。通过这种方式,并行的非集成更改的数量将保持在可管理的最小值

答案 2 :(得分:3)

在你的情况下,GitHub自动创建了第一个提交(通常是README.md和LICENSE文件),为了推送你的提交,你必须首先提取(获取和合并)GitHub的提交。

答案 3 :(得分:2)

当你拉动时,Git将获取原点的提交,并尝试在它们之上快进你的本地提交,进行合并。之后,您可以通过这种方式进行推送,并且不会与其他更新产生冲突。