故障排除:推送到 GitHub 时更新被拒绝

GitHub 仓库同步问题及解决方案

该视频演示了在GitHub仓库同步时遇到的一个常见问题,并提供了解决方案和预防措施。

问题: 当本地仓库尝试将文件推送到GitHub仓库时,出现错误提示“updates were rejected because the remote contains work that we don't have locally”。

原因: 由于在创建GitHub仓库时,默认会初始化一个README文件,而本地仓库没有该文件,导致同步时出现冲突。

解决方案:

  1. 使用 git pull origin master 命令将GitHub仓库中的README文件拉取到本地仓库。
  2. 再次执行 git push origin master 命令,即可成功将本地文件推送到GitHub仓库。

预防措施:

  1. 在创建GitHub仓库时,不要勾选“Initialize this repository with a README”。这样GitHub仓库将为空,避免初始文件冲突。
  2. 使用第二种方法,即先在本地仓库创建README文件,然后将本地仓库推送到GitHub仓库。

视频中还强调了,如果在观看视频过程中遇到问题,可以先观看该系列的其它视频,再回过头来观看该视频。

这是 Data School 系列的第 11 个视频,名为“Git 和 GitHub 入门”。 相关链接和完整文字记录在下面。 首先,我将向您展示问题以及如何解决它。 然后,我将向您展示两种方法,可以避免在第一时间遇到此问题。 我将快速完成示例,因为本视频中的所有命令都在之前的视频中解释过。 如果您迷路了,只需观看本系列的其余部分,然后返回本视频。 无论如何,我将从演示问题开始。 让我们在 GitHub 上创建一个仓库,并使用 README 文件初始化它。 我们的计划是创建一个本地 Git 仓库,将文件添加到本地仓库,然后将该仓库与 GitHub 同步。 让我们在本地机器上创建一个与 GitHub 仓库同名的子目录,尽管您实际上可以使用任何您喜欢的名称。 然后,我们“更改目录”到子目录,并使用“git init”初始化 Git。 现在,我们将添加一个“远程”,它允许您稍后轻松引用您的 GitHub 仓库。 您键入“git remote add origin”,然后是 URL,它将是 HTTPS URL,或者在我的情况下,是 SSH URL。 我在视频之前创建了一个简单的文本文件,我现在将它复制到我的本地仓库。 运行“git status”确认 Git 已经检测到一个未跟踪的文件。 现在,我们将使用“git add .”将该文件暂存以进行提交,并将使用“git commit -m”和一条消息提交该文件。 最后,我们将使用“git push origin master”推送文件,它指示 Git 将提交到 master 分支上的更改推送到我们之前定义的 origin。 不幸的是,出现了一个错误,它指出更新被拒绝,因为远程包含我们本地没有的工作。 那么为什么会出现这个错误? 这有点复杂,但问题的根源在于您使用 README 文件初始化了 GitHub 仓库。 这实际上向您的 GitHub 仓库添加并提交了一个文件,而您的本地仓库不知道这个文件。 因此,当您尝试将文本文件推送到 GitHub 时,Git 对您的本地仓库中为什么没有 README 文件感到困惑。 Git 正确地猜测您可能正在尝试同步这两个仓库,但它宁愿让您手动解决问题,而不是猜测如何自动为您解决问题。 因此,要手动解决此问题,您只需要使用 GitHub 仓库中已发生的内容更新您的本地仓库。 为此,我们将使用命令“git pull origin master”,它从您的 GitHub 仓库中获取 README 文件并将其合并到您的本地仓库中。 现在,您可以再次尝试“git push origin master”,这次它将成功。 我们可以刷新 GitHub 上的仓库,并确认文本文件确实存在。 现在,让我们谈谈两种可以避免在第一时间遇到此问题的方法。 第一种方法是遵循我在本视频中执行的完全相同的步骤,只是不要选中使用 README 初始化 GitHub 仓库的框。 这样,您的 GitHub 仓库最初将为空,并且您第一次尝试推送时不会遇到错误。 第二种方法,我个人更喜欢这种方法,是使用克隆方法。 如果您已经观看了本视频系列的其余部分,克隆方法看起来很熟悉,但我会在这里快速演示一下。 在这种方法中,您首先创建一个 GitHub 仓库,并且必须使用 README 初始化它。 然后,您使用“git clone”后跟仓库 URL 将此仓库克隆到您的本地机器。 克隆会自动下载 GitHub 仓库并将其存储在您的工作目录的子目录中。 它还会自动设置您的 origin 远程,因此您无需手动添加远程。 最重要的是,您的本地仓库和 GitHub 仓库已经同步。 现在,我们只需将文本文件复制到我们的本地仓库,添加它,提交它,然后推送。 刷新 GitHub,您将看到文本文件在那里。 总之,让我快速总结一下本视频。 如果您遇到了推送被拒绝的问题,您可能只需要在“git push origin master”之前“git pull origin master”。 如果您想避免在第一时间遇到此问题,有两种简单的方法可以避免它。 一种方法是遵循本视频的第一部分,但在创建 GitHub 仓库时不要选中 README 框。 另一种方法是遵循视频结尾处的克隆方法,您在 GitHub 上确实包含一个 README,但您使用“git clone”而不是“git init”在本地。 请注意,GitHub 不允许您克隆空仓库,这就是为什么如果您要克隆,您必须选中包含 README 的框。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dataschool

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值