如何调和独立的 head 和 origin/master?已经检查了旧的哈希值

2023-11-30

介绍和搜索

所以我认为我犯了一个严重的错误,我很担心。我已经解析了论坛中的独立负责人,我已经接近找到答案,但场景太具体,不适用于我所在的地方。如果您找到可以回答我的问题的特定主题,请链接我。

例如:如何使分离的 HEAD 与 master/origin 保持一致?

那家伙已经做到了git rebase -i,我还没有。我尝试过 rebase,但它没有解决我的问题。

小背景:

  • 我是 git 新手;我只自己使用git
  • 我拥有远程存储库
  • 需要旧的代码集,这是一个时间敏感的问题
  • 我学会了一点编程,并在没有其他人编码的工作场所使用它(所以我不能完全寻求帮助)

Issue:

为了使用工作代码访问旧的提交,我做了(可能是错误的事情):

git log
git checkout <hash-of-desired-old-commit>

我继续完成代码。感谢上帝的版本控制!但是天啊,为什么 git 这么复杂呢?我该如何保存这项工作?我现在处于一种超然的状态。 Origin/Master 在未来的一些提交中最好全部删除。

我尝试过的:

  • 将整个文件夹复制并粘贴到其他地方只是为了备份
  • git add -A随后是git commit -m "oh shit, detached head commit" and git rebase master
  • git reset --hard HEAD~3根据这里的建议:签出旧提交并将其设为新提交

Question:我如何调和我独立的头脑与起源/主人?一旦和好,我需要吗?git push --force或其他东西(特别是与--force旗帜)?这个独立的头有工作,我读到,我等待的时间越长,垃圾收集可能会来吃掉我丢失的分支。抱歉,我确实缺乏 git 方面的任何正式培训...我几乎准备好检查 origin master,然后重写代码。

先感谢您。


如果您位于分离的 HEAD 上并且想要保存 HEAD 当前所处的任何状态,只需创建一个分支:

git branch save-this-head

现在,你有一个分支指向那个确切的分离头,所以你可以安全地检查它而不会丢失东西:

git checkout save-this-head

现在,你不再处于分离的 HEAD 状态。您和您的更改都是安全的!如果您有任何待处理的更改,您应该立即提交这些更改,以便我们可以自由移动。

之后,您可以将这个新分支重新设置为其他分支,例如主分支:

git rebase master

这应该会重放 master 上缺少的提交。因此,自分离 HEAD 以来所做的更改将被恢复。

如果你只是想继续下去save-this-head状态,并扔掉以前的master,你可以只checkout master,然后将其重置为saves状态:

git checkout master
git reset --hard save-this-head

这将使master相当于save-this-head,丢弃所有其他更改master。如果你想推送它,你可能必须强制推送才能从远程删除提交。


我读到,我等待的时间越长,垃圾收集可能会来吃掉我丢失的树枝

首先,只要您保持在该状态,HEAD 指针就会继续查看该提交对象(这就是为什么它首先被称为“分离的 HEAD”)。这将防止任何垃圾收集删除该提交对象(及其所有父对象)。

即使您不小心离开了分离的 HEAD 状态,也使您引用的提交成为“悬空”提交后,Git 会将对象保留数周,然后再考虑允许对象被垃圾收集。仅仅因为它受到垃圾收集并不意味着 GC 会实际运行,特别是当您不与存储库交互时。


顺便提一句。将来,每当您想返回历史记录中的提交并期望do某些东西(不仅仅是查看),您应该创建一个分支。即使这只是暂时的,拥有它也会让你更自由地走动,并且你不会因为这种分离的 HEAD 状态而气馁做任何事情:

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

如何调和独立的 head 和 origin/master?已经检查了旧的哈希值 的相关文章

  • 尽管存在但未找到 Git https:// 存储库

    我在 github 上有一个私人仓库 它的位置被改变了 我尝试更换遥控器 但无法再按了 ls remote https github com xxxxx xxxxx git 给了我这个 远程 未找到存储库 致命 存储库 https gith
  • Git 更新文件时更改默认 umask

    我的 Git 有问题 我在 Google 和 StackOverflow 中搜索了解决方案 但没有任何帮助 问题是 每次 git 更新工作目录中的某些文件时 当我签出分支或合并分支等时 文件权限都会更改 以便添加 可写到组 标志 如果该文件
  • 致命错误:找不到“Fabric/Fabric.h”文件

    我正在使用 xcode 6 3 1 OSX 10 10 3 并且我已经在本地系统上成功配置了 crashlytics 它工作正常 并通过 Fabric 应用程序发布构建 但是当我将相同的代码库转移到 teamcity 时 它向我显示以下错误
  • 在 $git push -u origin main 命令之后,Git bash 不请求任何身份验证,实际上什么也不做

    当我尝试将代码上传到 github 时 以下是我在 Git Bash 终端中执行的步骤 当我尝试使用将代码推送到 github 时 git push u origin main光标移动到下一行并持续闪烁 但不执行任何操作 git remot
  • dulwich - 从远程仓库身份验证克隆

    我找不到有关此主题的任何资源 我需要通过提供用户名和密码从私有存储库进行克隆 然而 当它们作为关键字参数提供给 dulwich get client from path 时 会出现错误 提示 未知参数 用户名 这似乎是一件简单的事情 但我找
  • 更快的“git rebase --preserve-merges”方法

    我通过创建一系列功能分支来使用 git 并在完成后将它们合并到 mastergit merge no ff 这会创建空的合并提交 可用于识别先前功能分支的起点和终点 为了处理多个并发分支 甚至嵌套分支 我使用 rebase 我从不合并回去
  • 使用可通过 FTP 访问的 Web 服务器进行 Git 托管?

    我运行一个 糟糕的 网站 托管在第三方网络服务器上 我可以通过 FTP 访问我的 Web 服务器 据推测 Git 本身具有通过 FTP 推送 拉取的能力 由于我的 Web 服务器已经可以随处访问 我希望将其用作集中式 Git 存储库 我可以
  • 从子文件夹自动部署 Heroku

    我知道你可以从github自动部署到heroku 但我还没有找到一种方法只将子文件夹从github推送到heroku 从命令行我知道可以通过以下方式执行此操作 git subtree push prefix
  • 如何防止自动工具自动重新生成配置脚本?

    有时由于SCM没有严格记住文件的时间戳 生成的Makefile会认为需要重新运行 autoreconf i 或相当于从Makefile am重新生成Makefile in 从configure ac重新生成配置等 我该如何防止这种情况 我想
  • AngularJs:显示来自 git 或 Bower 的版本号

    我创建了一个 Angular 应用程序 我想在屏幕上显示应用程序的当前版本号 目前我已将其实现为常量 application constant constants VERSION 1 1 2 但这需要我在每个新版本上更新常量 我使用 Bow
  • AWS Codepipeline 是否会将符号链接传递到工件中的 Codebuild

    我的 github 存储库中有一些符号链接 当我有一个直接从 github 克隆的 Codebuild 项目时 符号链接会被保留 我进行了切换 以便 Codepipeline 监听我的更改devgithub 中的分支 并将工件传递给 cod
  • git merge 和 git merge origin 之间的区别

    这不是一个关于git merge origin branch vs git merge origin branch git merge
  • git pull 保留本地未提交的更改

    即使存在上游更改 如何安全地更新 拉取 git 项目 保持特定文件不变 myrepo config config php 有没有一种方法 即使这个文件在远程被更改 当我 git pull 时 其他所有内容都被更新 但这个文件没有改变 甚至没
  • Jira 和 git:如何反映所有分支?

    使用 git Fisheye Crucible 和 Jira 4 2 的开发基础架构 自我们在 Jira 中配置映射以来 对 Fisheye 注册存储库的提交反映在 Jira 项目和票证中 然而 似乎只有主分支上的提交才会被反映 在 Cru
  • 如何在合并期间优先选择一个分支中的文件?

    前段时间我从我的项目中创建了一个分支master分支 我们就这样称呼它吧new feature 当我正在工作时new feature the master分支遵循其正常的演变 现在new feature已准备好合并到master我看到一些冲
  • 我可以将 GitHub 中的源文件嵌入到 Gists 之外的网页上吗?

    Context 您可以创建一个Gist https gist github com 在 GitHub 上并将其嵌入到您的网页中 嵌入要点 https help github com articles about gists embeddin
  • 查看单个文件历史记录的“x”提交的完整文件差异(托管在 git 中)

    假设我在 git 中有一个名为filex code 我想看看完整代码最后的x该文件的版本每个更改的部分都突出显示 全部集中在一处 所以一个x 窗格提交历史记录filex code 几乎就像我在做一个x paned diff 但查看历史版本而
  • 如何从现有 git 存储库创建 Netbeans 7 项目?

    我想象某个地方有一个 来自回购的新项目 选项 但我找不到它 还有比这更多的事情吗 还是我错过了什么 Use the Team菜单 选择 Git gt 克隆 将存储库克隆到本地文件夹后 NetBeans 将为您提供打开项目的选项 尝试创建项目
  • GitHub 的 README 支持哪些文件类型

    我注意到 GitHub README 使用了许多不同的文件类型 最常见的是 md and rst 查看 GitHub 文档和帮助页面后 我没有找到有关允许哪些文件类型的信息 我只是在寻找类型列表 以便我可以找出可以在下一个自述文件中使用哪些
  • 如何从 git 镜像克隆中排除拉取请求

    我想将一个 Bitbucket 存储库镜像克隆到另一个 Bitbucket 存储库 我使用 shell 脚本来管理它 该脚本执行以下操作 git clone mirror

随机推荐

  • Windows 多处理

    我发现 Windows 在多处理方面有点笨拙 我对此有疑问 pydoc 指出你应该使用多处理时保护 Windows 应用程序的入口点 这是否意味着仅创建新进程的代码 例如 Script 1 import multiprocessing de
  • 重定向在 WordPress 中不起作用?

    我正在使用下面的代码在 WordPress 中进行重定向 currentPage explode SERVER REQUEST URI current page url currentPage 0 if current page url e
  • 查找 _id 在 mongodb 中不起作用

    我有一个名为 Releases 的集合 其中包含一个名为 Product 的子文档 我的收藏看起来像这样 id ObjectId 5b1010e4ef2afa6e5edea0c2 version abc description p abc
  • 当新电子邮件到达共享邮箱中的任何子文件夹时运行代码

    我想在任何新电子邮件到达特定共享邮箱时运行代码 当电子邮件到达 INBOX 文件夹时触发该事件 如果新电子邮件直接进入其子文件夹 则该事件不会触发 例如 电子邮件受保护 收件箱 子文件夹1 如果收件箱中的任何子文件夹收到新电子邮件 我应该更
  • 赌场 24/7 员工名册的数据库模型

    我们目前使用基于笔 纸的名册来管理赌场的桌面游戏工作人员 每行代表一名员工 每列代表 20 分钟的时间段 每个单元格代表员工被分配到的表 或者他们被分配到休息时间 员工轮班的开始和结束时间各不相同 他们可以处理的游戏 技能也各不相同 我们需
  • 编译并运行C++代码运行时

    有谁知道如何在程序运行时编译您编写的 C 代码 后来我想运行该代码 我想这样做是因为我正在尝试制作一款可以教您编程的游戏 因此用户必须在游戏运行时编写代码并进行测试 谢谢你的帮助 如果您选择一种在设计时考虑到嵌入的语言 例如 LUA 或 p
  • 如何在 Prolog 中将谓词作为另一个谓词的参数传递?

    我有这 3 个谓词 times X Y Result is X Y minus X Y Result is X Y plus X Y Result is X Y 例如我想通过times 2 2 in the plus X Y 像这样plus
  • JVM 是开源代码吗?

    JVM 是开源代码吗 如果没有 如何获取JVM的代码 这完全取决于您使用哪个 JVM 如果您使用 OpenJDK JVM 那么您可以从以下位置获取源代码here or here来自 OpenJDK 项目列表 或者here来自 GitHub
  • 无法连接到SQL Server 2008?

    我一直在尝试各种技巧 从启用 TCP IP 向防火墙添加例外到戳比尔盖茨巫毒娃娃 但似乎没有什么对我有用 通过management studio连接到sql server 2008真的那么难吗 也许 抢劫银行会更容易 当我弄清楚要抢劫哪家银
  • RSA 加密的结果是否保证是随机的

    我使用 RSACryptoServiceProvider 来加密一些小数据块 对于我正在研究的解决方案 重要的是 如果使用相同的公钥对同一段源数据加密两次 则结果 加密的数据块 不相同 我已经用一个例子对此进行了检查 它的效果正如我所希望的
  • 获取发件人电子邮件地址

    我有以下 VBA 代码 用于在收到特定主题时自动发送电子邮件 Private WithEvents Items As Outlook Items Private Sub Application Startup Dim objNS As Ou
  • 我们如何按类指定 jQuery 验证插件的规则?

    The jQuery 验证插件效果很好并且非常容易使用 selector validate 只需设置 CSS 类 如 必需的电子邮件 就会显示默认消息 但是 我需要自定义消息 该文档说您可以使用元素的键值对及其相应的消息来指定规则 sele
  • 如何在 Pygame 中使用 Sprite Collide

    我正在制作一个非常简单的游戏 小鸟 玩家 必须躲避岩石 如果它被岩石击中 你就会失败 我正在尝试使用 pygame sprite collide rect 来判断它们是否接触 但我似乎不知道如何正确使用它 这是我的代码 import pyg
  • Android - 创建进度对话框

    我是安卓开发新手 我想开发一个dialog with a progressbar在我的应用程序中 当我点击搜索按钮时dialog应与出现progressbar 显示在切换到另一个之前进度正在进行中activity 请用示例代码建议我 Use
  • 使用 Visual Studio 2008 编译 php 扩展,MODULE ID 与 php 不匹配

    使用 VC9 2008 和 VC10 2010 编译我自己的 php 扩展后 使用以下步骤 http blog slickedit com 2007 09 creating a php 5 extension with visual c 2
  • 使用低级键盘钩子更改键盘字符

    我正在创建自定义键盘布局 作为开始步骤 我想让用户按下一个键 让我的键盘钩子拦截它 并输出我选择的不同键 我找到了这个键盘挂钩代码 我试图根据我的目的对其进行稍微修改 http blogs msdn com toub archive 200
  • 在进程中断期间使用 python ctypes 时高延迟背后的原因

    在调查 Python 代码库中的关键路径时 我们发现 ctypes 在延迟方面的行为是相当不可预测的 我们的应用程序的更多背景 我们有很多进程 每个进程都通过共享内存进行通信 我们利用 python 库multiprocessing Raw
  • iPhone 如何通过无线或蓝牙访问另一台非 iPhone 设备?

    我试图弄清楚 iPhone 是否可以通过无线或蓝牙连接到另一台非 iPhone 设备 但发现了相互矛盾的信息 我发现的大部分内容都是在 SDK 3 0 版本发布之前发现的 当时这肯定是不可能的 查看堆栈溢出问题 例如iPhone 3 0 S
  • 将 HTTP 请求重定向到 HTTPS 的推荐方法

    我对如何将所有 http 页面重定向到 https 有一些疑问 我看到有人告诉我们要像这样重写reply 阿帕奇说要做this way 任何人都可以向我解释进行此更改的推荐方法是什么 将 http 重定向到 https 的唯一安全方法是使用
  • 如何调和独立的 head 和 origin/master?已经检查了旧的哈希值

    介绍和搜索 所以我认为我犯了一个严重的错误 我很担心 我已经解析了论坛中的独立负责人 我已经接近找到答案 但场景太具体 不适用于我所在的地方 如果您找到可以回答我的问题的特定主题 请链接我 例如 如何使分离的 HEAD 与 master o