【问题标题】:Local copy ahead of master本地副本先于主副本
【发布时间】: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


【解决方案1】:

尝试使用-f标志git push origin master -f推送

【讨论】:

    【解决方案2】:

    试试这个 git 命令

    git push origin master --force
    

    或力不足-f

    git push origin master -f
    

    【讨论】:

      【解决方案3】:
      git fetch origin master
      

      此命令将更新远程 repo 的本地副本,而无需触及本地 repo 或工作目录。这样,您可以通过运行以下命令来查看远程分支和本地分支之间的区别:

      git diff origin/master
      

      然后,您可以根据需要运行以下操作之一:

      # Run this to keep any changes from the remote branch
      git rebase origin/master
      git push origin master
      
      # Run this to overwrite changes on the remote branch
      git push --force origin master
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-01
        • 2021-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-23
        • 2016-10-03
        • 2023-04-04
        相关资源
        最近更新 更多