【发布时间】:2021-06-20 18:16:57
【问题描述】:
我最近把我用 Git 跟踪的一个项目弄得一团糟。我做了几处更改,而不是将本地存储库的更改还原回来,我决定将存储库再次克隆到我机器上的另一个目录中,以创建各种备份(我知道有点多余)。然后我继续确实还原了我原始本地存储库中的更改,并且没有使用/不需要新克隆,因为我能够修复原始本地副本中的所有内容。
现在的问题是当我尝试推送到 GitHub 时,Git 会抛出以下错误:
To github.com:<my-username>/<repo-name>.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'github.com:<my-username>/<repon-ame>.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
自从克隆它后,我没有将任何东西推送到 repo,并且没有其他人在从事该项目,所以我不确定为什么它会在我的本地副本之前。只是将其克隆到另一个目录会导致 master 领先吗?
所以我的问题是,我如何在不先从 master 拉入的情况下继续推进它,因为我确信 git pull 只会删除我对本地文件所做的更改,在原始目录(第一个克隆)。如果需要,我将手动复制/粘贴以更新文件,因为文件不多,之后我不会返回这个项目。但我只是在寻找一些澄清,以及我可以更新 repo 的最安全的方法,即使那是复制和粘贴,尽管我想有更好的方法。
我仍在掌握 Git,因此我们非常感谢任何指导。感谢您的宝贵时间。
【问题讨论】:
-
您在修复之前是否将您的烂摊子推送到远程仓库?还是只是在您的本地机器上?
-
你是否使用 git reset 来还原原始仓库?
-
谢谢@Ali 我没有把事情搞砸。几天内我的远程仓库没有更改,但我的本地副本(来自第一个克隆)具有我今天所做的所有错误修复。现在我想将这些错误修复推送到远程,但我得到了上面的错误
-
感谢您的回复@Mudassarhassan。我没有。我使用 VS Code,并在“源代码控制”选项卡中恢复了我的混乱以匹配来自 VS Code 的遥控器。这导致我当前的代码(来自第一个克隆)与遥控器完全匹配。然后我在本地做了一堆错误修复,并尝试推送,现在我得到了那个错误。所以实际上,我的本地领先于远程,但 Git 不这么认为。
标签: git github git-push git-clone git-pull