代码之家  ›  专栏  ›  技术社区  ›  DuchSuvaa

Git:Middle-不小心推了main(不远处)而不是master

git
  •  0
  • DuchSuvaa  · 技术社区  · 4 年前

    这个问题很难问,因为我很困惑,不太明白发生了什么。更重要的是,我在理解git方面仍然有问题,我不在任何团队中工作,我只使用它来保存我在本地所做的更改,总是在一个分支上。

    我得到一个错误:src refspec main与任何

    我应该怎么做才能撤消这个“输入错误”操作并将我的更改视为未提交?

    2 回复  |  直到 4 年前
        1
  •  1
  •   Obsidian Age    4 年前

    因为你做了一件好事 git push origin/main ,您的更改现在在服务器上生效( origin ),在 main 树枝有 而且 master 分支 ; 只是 在…的后面 主要的 .

    假设你所做的只是 git push 而且 仍然作为本地副本存储。因为您没有使用拉取请求,所以我敢打赌您是唯一一个处理此存储库的开发人员,而且您不需要从源站运行拉取。因此,您当地的分支机构和 origin/master

    我对这个提交做了软重置,但工作目录仍然是干净的

    这是因为您的工作目录是最新的 origin/main

    确保 使用您最新的更改进行更新, 你可以简单地做一个测试 git push origin/master 主要的 在原点上分支。

        2
  •  0
  •   torek    4 年前

    在推动提交时,我无意中键入了“源主”而不是“源主”。我没有一个名为main的分支。

    我有一个

    error: src refspec main does not match any
    error: failed to push some refs to '(...)'
    

    这很正常。 在这一点上。

    那是 正常(好吧,这取决于你所说的“清洁”是什么意思),你一定做了别的事情。就像你说的,虽然你不太确定 什么 是的。

    在此之后,我对这个提交进行了软重置,但工作目录仍然是干净的。我不知道现在该做什么,老实说,我不知道我现在在哪里。

    git reset --soft
    

    那个 可能 git push origin main ,它什么也没做,对那个州没有影响。

    如果你提交了所有文件 那么他们现在是 Git,你可以取回它们,不管你做什么,只要你保留 存储库本身 围绕

    git status nothing to commit, working directory clean ,也就是 完全正常

    您的工作目录包含操作系统坚持要创建的文件(和文件夹/目录) 这些文件),您可以在其中查看和使用您的文件。这些文件是 ,在任何有用的意义上。它们就在你的工作树上。

    什么 Git中有一个大型数据库 提交 ,以及其他支持对象。每个提交都有一个数字一个巨大的、丑陋的、看起来随机的东西,用 hexadecimal 那一个特别的承诺 . 这个数字就是Git最终的结果 发现

    跑步 git log 将显示提交,从 当前提交 . 存储库中的一个提交始终是 1. 这个 现在的 退房 . 当您签出一些提交时,Git会提取这些文件的提交版本,并将副本粘贴到工作树中,以便您可以查看和使用它们。

    git checkout 以及唯一的提交编号,您可以选择 任何 承诺提取。Git将从您的工作树中删除它先前从当前提交中提取的副本,并切换到从您选择的提交中提取的副本。那个承诺 变成 当前提交 . 因此,每次提交都会保存所有文件,即它们所处的状态 ,以便您可以恢复旧版本,然后切换回新版本。

    但是那些丑陋的大数字, deadbeef badc0ffee dadcafe f031905de2 cabbabe 分支机构名称 和其他名字。Git安排挑选这些名字 一个特定的提交 master main 进来吧

    当您创建 Git存储库,通常只需一次初始提交即可。下面的脚注1解释了一次初始提交的全部原因,但它允许存在分支名称。 现在称之为首字母 树枝 名字 主要的 .

    空空如也 . 上面说你在“未出生的树枝”上,或者 no commits yet ,而不是名为 主要的 .

    如果你愿意,现在就可以 改名 你的 主人 主要的

    git branch -m master main
    

    这个 -m ,这是一种有趣的拼写方式 2.

    一旦你 主人 主要的 ,您的使用情况将与GitHub的使用情况相匹配,您可以尝试 . 但是,请注意,如果让GitHub创建第一次提交,并且 首先,你现在有 两个不同的首次提交 根据 一个名字

    如果您告诉GitHub在那里创建存储库作为 空空如也 提交后,您在这里就可以了: git推送源主 将您的重命名推送到- 主要的 提交,这将创建 在GitHub上,一切都会好起来的。


    1. 这个规则有一个例外,Git用几个不同的名称调用它:一个 孤支 . 在这个州,有 当前提交。

    没有承诺 . 因此,没有现有的commit充当 现在的 犯罪所以Git需要一个“无当前提交”状态。在遥远的过去,建立一个全新的、完全空的存储库是实现这一目标的唯一途径。然后有人想: 天哪,至少对于测试来说,如果没有别的,我们应该能够重新创建那个状态 --orphan 并称之为 . 但那是个坏名字,所以他们把它改成了 未成熟枝

    在这种奇怪的状态下,在一个全新的空存储库中, . 所以这也很令人困惑。当您处于此状态此未出生或孤立分支状态且尚未提交时 第一 变成 当前提交,创建分支。这允许分支名称突然出现。所以Git所做的是 记下你的名字 没有 . 然后进行提交,Git创建名称,让它选择刚刚进行的新提交,从而解决问题。

    GitHub将通过 为您创建初始提交 ,这也允许他们创建分支名称。这解决了整个孤立/未出生分支的问题。当每个人都同意第一个分支机构的名称时 主人 这一切都非常有效,但现在GitHub使用 和其他人使用 主人 ,这就产生了自己的问题。

    2. 使用 意指 改名 来自Linux mv 命令,以“移动文件”。这个名字又来自Unix,所以这是一个历史性的东西。