git checkout my_branch 与 git checkout origin/my_branch

2024-01-12

我当时在branch1当我结帐时branch2像这样(两个分支都存在)。

git checkout origin/branch2

然后我得到了一个分离头错误:

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

但后来我只是结账branch2(没有origin)然后就可以正常工作了:

git checkout branch2

那么有什么区别git checkout有和没有origin/;以及为什么会有detached HEAD使用时出错origin/?


“detached HEAD”消息是警告,而不是错误。

原因很简单。 Git 对于分支有两种状态:

  • 在树枝上,或
  • 不在树枝上。

当您在分支上进行新提交时,分支会自动前进以包含新提交。

When you are not on a branch and make new commits, the non-branch also advances, but—here's the reason for the warning—if you then switch to some other branch (so that you are on it), git forgets where you were.1 When you are on a branch, the branch name remembers the new commits; when you are not, there is nothing to remember them.

您不能位于远程跟踪分支上

分支origin/branch2 is a 远程跟踪分支:即一个记住“在哪里”的分支branch2 was on origin上次我们(我们的 git 和origin的 git)进行了一次关于分支的对话”。因为这样做的目的是跟踪分支的位置they是,git 不会让你“进入”该分支并进行新的提交(然后它会记住在哪里)you是而不是在哪里they were).

因为你不能在上面,所以检查它会给你“分离的头”状态。

但您可以在普通(本地)分支上

分支branch2是一个正常的、普通的、当地的分支机构。这是你的,你可以随心所欲地处理。您可以继续并进行新的提交。

(您的本地分支还可以记住远程跟踪分支,因为它是所谓的upstream。 Git 对此的令人困惑的术语是,您的本地分支正在“跟踪”远程跟踪分支。 “跟踪”这个词在这里出现了太多次,“分支”这个词也是如此,都有不同的含义。)


1Actually it saves it for a while, in the reflog for HEAD, but this is only good for 30 days by default.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git checkout my_branch 与 git checkout origin/my_branch 的相关文章

  • 如何使用 vim 作为寻呼机设置彩色 git diff

    我无法配置 git 来遵循我的请求 使用 vim 作为差异分页器 在交互模式下添加文件时保留差异颜色 My gitconfig setup color ui auto diff false pager diff vim 通过此配置 交互模式
  • 如何仅隐藏一些未提交的更改?

    我正在对 Git 存储库进行重大更改 并意识到某些更改需要向后移植到错误修复分支 我不想签入我的所有更改master因为它们还没有经过充分的测试和准备 但我确实想提取其中一些更改并将它们提交到错误修复分支 然后按原样返回到 master 我
  • git 忽略行结尾

    我知道已经有人问过类似的问题 但我仍然无法让它发挥作用 我的项目在使用不同操作系统的人之间共享 而我使用的是 OSX 另外 并不是每个人都使用 git 有时我最终不得不提交其他人的更改 有时 git 会突然说有待处理的更改 查看文件 它们看
  • libgit2 返回:Refspec 'refs/heads/origin/HEAD' 在 TortoiseGit 中未找到错误

    启动 TortoiseGit 时出现此错误 无法获取所有参考文献 libgit2 返回 未找到 Refspec refs heads origin HEAD 虽然很烦人 但这并不妨碍我使用 TortoiseGit 然而 我想让它消失 因为它
  • Git 日志历史记录

    对于版本控制来说 重要的一件事是知道谁做了什么更改 如果某些内容发生了变化 而我不知道为什么要进行更改 我会查看历史并询问进行更改的人 当我探索 git 时 让我对这个功能有点紧张的一件事是它似乎很容易伪造 是什么阻止我将同事姓名 电子邮件
  • GIT 中的 Fastlane 应用程序文件?如何检索当前的 apple_id?

    我为我的 XCode 项目设置了 Fastlane 来实现构建自动化 至少 Fastfile 包含构建选项 应该位于 GIT 中 但我也很高兴 Appfile 团队标识符 也位于 GIT 中 主要问题 Appfile 应该包含我的 appl
  • 在单独的终端屏幕上显示 git diff 和 git log 输出

    设置新的开发环境后 我遇到了一个奇怪的 git 行为 我不记得过去见过 我习惯于git diff and git log在终端中创建一个新屏幕并在其中显示其输出 什么less默认情况下 我用它作为我的寻呼机 然后我可以退出并返回到之前的终端
  • Git Add - 致命:添加文件失败

    我的 git cmd exe 窗口如下所示 git add NextFolder error unable to create temporary file No such file or directory error NextFolde
  • 禁止 Gerrit 推送到 refs/for/master

    我已经更新了所有项目昨天获得访问权限 人们说他们今天早上无法将更改推送到存储库 当我恢复访问权限后 他们仍然无法将更改推送到存储库 只能clone工作正常 在将更改推送到远程存储库时 它表示 remote rejected HEAD gt
  • 在 Xcode 9 上切换分支

    我无法找到使用 Xcode 9 切换分支的菜单项 工作副本菜单似乎已经消失 有任何想法吗 Xcode 9 Xcode 8 Press 2 to open the new Source Control Navigator 右键单击master
  • 使用 Git 处理 subversion:忽略对跟踪文件的修改

    我目前正在使用 subversion 存储库 但我正在使用 git 在我的计算机上本地工作 它使工作变得更加容易 但也使 subversion 存储库中发生的一些不良行为变得非常明显 这给我带来了问题 拉取代码后 有一个有点复杂的本地构建过
  • 为什么 git 无法识别我的本地存储库?

    我刚刚回到一个我已经使用 Git 大约 6 个月的项目 看到了这个 cd d DEVELOP BlenderAe My repo root git status fatal not a git repository or any of th
  • 我可以将我的heroku git repo导入bitbucket吗?如何?

    我的笔记本电脑坏了 我需要从另一台计算机上编码 我正在使用 Heroku 我想将最新版本的代码从 Heroku 获取到另一台机器 据我了解 强烈建议使用 GitHub 或 BitBucket 获取适当的远程存储库 我决定尝试一下 BitBu
  • 永久删除 git 提交历史记录

    我需要永久且完全删除 git 存储库的提交历史记录并继续使用文件的当前版本 旧版本 提交不得以任何方式访问 我尝试创建一个新的主分支 删除所有其他分支 但是当我在 git bash 中尝试 git show xxxx 时 旧的提交继续显示
  • VS2013 - GIT 不工作

    我最近安装了VS2013 每当我尝试使用 GIT 执行任何操作时 我都会在输出窗口中收到以下两条消息 libgit2 引发错误 类别 未知 错误 本机库未提供错误消息 该问题可能主要出现在远程存储库获取中 在克隆远程存储库之前 请打开远程
  • Git 身份验证 - 以新用户身份拉取

    以下命令集可以正常工作 mkdir carboncake cd carboncake git init git remote add origin email protected cdn cgi l email protection rep
  • 返回到 Github Desktop 中的上一个提交

    我正在尝试使用 GitHub Desktop 即 GUI 应用程序 而不是命令行 返回到先前的提交 在同一分支上 我认为这是一个核心功能 因为它是首先使用源代码控制的主要原因 我可以看到可以恢复提交 但这并不是我真正想要的 因为它创建了一个
  • Windows 上的 git 忽略文件名大小写更改 [重复]

    这个问题在这里已经有答案了 我有一个reactjs应用程序 我正在将所有文件名标准化为小写以符合Nodejs 最佳实践 https devcenter heroku com articles node best practices stic
  • 在 git 中记录前 10 个

    两个问题 如何从头到尾显示 git 中的前 10 个提交 无分行 如何指定提交索引并记录它 显示第二个或第三个 我知道 git 使用父级来链接提交 很容易从头到尾记录提交 喜欢 git log HEAD 10 但我需要从头到尾查询 可以吗
  • 如何使用 git-tfs 清理损坏的历史记录

    我不确定我是如何进入这种状态的 但我的 tfs 默认远程分支中有一些 TFS 中不存在的提交 所以我想摆脱它们 所以我的历史是这样的 A B C D tfs default 但提交 B 和 C 实际上并不是 TFS 中的变更集 因此 当我签

随机推荐