git - 为什么 Git 要我先​​ pull 再推?

标签 git github

我在 GitHub 上设置了一个新的存储库并试图 push 它,但 Git 一直给我一个错误说:

error: failed to push some refs to...

我最终尝试先 pull 再推,结果成功了。但是为什么?

最佳答案

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

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

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

GitHub 有这个选项的原因 最有可能帮助开始新项目的用户(例如您自己)在 GitHub 上通过 pull 设置存储库后非常容易地开始/clone 并进行初始提交,允许您快速添加新文件并推送。

此外,通过使用 README 初始化存储库,您将拥有一个准备好克隆和开始跟踪文件的主分支。在完全空的存储库上时,您将收到来自 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 提交)阻止了您在不 pull 的情况下进行推送 作为您的本地存储库与 GitHub 上的存储库不同步。

关于git - 为什么 Git 要我先​​ pull 再推?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458665/

相关文章:

git - 为什么 git 认为我有一个稀疏 checkout ? "You are in a sparse checkout with 100% of tracked files present."

windows - 映射的 Windows 驱动器中的 Git 工作树

git - 如何将 git hook 添加到远程仓库?

Hudson checkout 问题的 Git 插件

Github:来自标记的 Wiki 页面标题而不是文件名/网络客户端

git log 只显示一个提交id

git - 语义发布 - 预发布版本不会随着补丁、次要版本或主要版本递增

github - GitHub Desktop 中是否有强制推送选项?

python - 如何在 GitHub 源 (Python) 上向 Heroku 添加我不想要的 secret 文件

git - 推送前清除 Git 提交