【问题标题】:git checkout master does not work after i created a branch....what can I do?创建分支后 git checkout master 不起作用....我该怎么办?
【发布时间】:2021-12-10 03:24:14
【问题描述】:

我创建了一个名为 basic 的文件,并创建了一个名为 new 的分支。移动到新分支后,我想切换到 master 分支,因此我使用了 git checkout master。可惜终端说没有master分支。

(base) Dun-Yan:basic ongdunyan$ git checkout master
error: pathspec 'master' did not match any file(s) known to git

这里是 git 状态:

(base) Dun-Yan:basic ongdunyan$ git status
On branch new
nothing to commit, working tree clean

如果你们都可以帮助我,我将不胜感激,和平:)

【问题讨论】:

  • 一些提示:使用git branch 列出所有本地分支或使用git fetch && git branch -r 列出所有远程分支,以确保基本分支名称是master。 2:要返回上一个分支,您可以随时使用git checkout -
  • 我敢打赌这是一个新的 repo,所以还没有 master 存在。我赢了吗?
  • git checkout - 没用,而是
  • (base) Dun-Yan:basic ongdunyan$ git checkout - error: pathspec '-' did not match any file(s) known to git
  • 可能叫main,而不是master?使用git branch 列出所有本地分支或使用git reflog 显示哪些旧提交或分支已签出

标签: git github git-branch git-commit git-status


【解决方案1】:

这意味着,是的,确实没有名为master 的分支。没有要求任何 Git 存储库具有任何特定的分支名称——您可以拥有一个完全具有 no 分支名称的存储库——所以这不是一个 错误,除非你当然 想要它是一个。 ?

使用git branch 列出所有现有的分支名称。在一个新的空存储库中,由于没有分支,因此不会打印任何名称,但您的 git status 输出表明您至少有一个分支名称,特别是 new

使用git branch -r 列出所有现有的remote-tracking 名称。这应该让你问:等等,什么是远程跟踪名称?(特别是因为 Git 将其称为 远程跟踪分支名称:我放弃了 branch 这个词 因为这些名称实际上根本不是 分支 名称。)远程跟踪名称是您的 Git 记住一些 其他 存储库的分支名称的方式。

这里的关键见解是您的分支名称是您的。它们不是任何人的分支。就像你的名字可能是 Sue、Rajeesh、Quentin 或其他任何名字一样,这并不意味着 每个 名为 Sue(或任何你的名字)的人都是 .您的 Git 存储库有自己的 分支名称。您可能希望自己的与其他人的匹配,但这只是您的愿望,而不是 Git 必须做的事情。

当您的 Git(您的 Git 软件在您的 Git 存储库上运行)与其他 Git(另一个存储库上的软件)对话时,这两个 Git 将进行协商,您的 Git 将能够看到他们的提交及其分支(无论如何,他们愿意向他们展示的任何程度)。当您运行 git fetch 时,您的 Git 将获取他们的分支和提交。但是您的 Git 会将他们的 分支名称 转换为您的 远程跟踪名称,因此如果他们有一个名为 fred 的分支,您将获得一个远程跟踪分支,其中包含一些其他名字。

为了让您的 Git 与另一个 Git 对话,您将使用 Git 所谓的 remote 设置您的 Git。远程只是一个短名称,例如 origin:我们让 Git 在这个短名称下存储一个 URL,然后我们运行:

git fetch origin

指示我们的 Git 查找短名称 origin,找到长 URL(ssh://git@github.com/some/path/to/repo.githttps://github.com/some/path/to/repo.git 或其他),并在那里连接并查看它们的分支和提交。

看到 origin 的名为 fred 的分支后,如果您的 Git 被指示将它带过来(这是默认设置),那么您将在您的存储库中找到 远程跟踪名称origin/fred。这表示 branch 名称 fred,如在名为 originremote 上所见。

git branch -r 命令列出了这些远程跟踪名称。使用git branch -a,您的Git 将列出您的分支名称​​和您的远程跟踪名称,这样您就可以看到您的new 和(如果此时存在)您的@ 987654341@。无论出于何种原因,1git branch -r 将其打印为 origin/fredgit branch -a 将其打印为 remotes/origin/fred

现在,您可能希望您的 Git创建一个新的分支名称,您可以这样做。但是,您应该首先阅读提交和分支名称的实际工作方式。 Git 仅使用名称2 来查找 提交: 真正重要的是提交及其哈希 ID(或正式的“对象 ID”)。


1这完全不一致。两种形式都可以:如果你愿意,你可以写origin/fredremotes/origin/fred。但是输出格式的这种差异没有充分的理由。实际全名origin/fredrefs/remotes/origin/fred,如果要努力插入remotes/ 部分,为什么不一路输入明确的refs/remotes/origin/fred 版本呢?但这只是旁白。

2嗯,mainlyonly 更准确,因为分支名称也参与了 branch.* 设置的键值查找你的配置。

【讨论】:

    【解决方案2】:

    您必须在master 上至少提交一次,然后才能签出到不同的分支,否则分支 HEAD 将实际上不存在并且 git 无法签出回“无处”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-31
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多