git rebase:重新调整的提交仍在索引中吗?

2023-11-29

当我读到git 变基,我明白重新定位的提交应该丢失。我说应该是因为我注意到,知道重新调整的提交 sha,我可以回忆起来。
假设我有以下三个提交

A -> B -> C

where C的啥是cshaid。然后,如果我交互地变基fixing-up C into B with git rebase -i HEAD~2然后我检查结果git log,我得到了预期的结果,意思是

A -> B'

where B'的 sha 不同于B's sha.
然而,运行git log cshaid再次显示

A -> B -> C

问题: 这是已知的行为吗?我尝试阅读git rebase --help但找不到相关信息。为什么重新定位的提交不会被简单地忘记?我的意思是,只有当您知道自己在做什么并且可以做到时,才执行变基是一种危险的操作,这就是拥有脏索引(或保留这些无用提交的地方)的意义所在?我错过了什么吗?
重现步骤(并更好地理解我的疑虑)。如果您愿意重现这种情况,请尝试:

  1. mkdir sampledir && cd sampledir && git init
  2. touch file && git add -A . && git commit -m "Initial"
  3. 编辑文件,然后git commit -am "First modification"
  4. 编辑文件,然后git commit -am "Second modification"
  5. git log,你会看到三个提交,记住 shaSecond modification
  6. git rebase -i HEAD~2, the fixup Second modification into First modification
  7. git log,您将看到两个提交,其中 sha 为First modification现在与步骤 5 中的不同
  8. 然而,git log sha-for-"Second modification"将显示与此列表中的点 5 完全相同的树

是的,这是预期的行为。未引用的提交最终将被垃圾收集,从而从磁盘中清除。它们会保留很多天(默认为 14 天),但在 14 天计时器开始计时之前,对象也必须已从引用日志中过期(默认情况下,无法访问的对象会在 30 天后过期)。

相关 StackOverflow 问题:

  • git reflog 过期和 git fsck --unreachable
  • 列出和删除不在分支下的 Git 提交(悬空?)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git rebase:重新调整的提交仍在索引中吗? 的相关文章

  • Git 命令查找哪些分支合并到当前分支以及何时合并

    我有几个功能分支正在自动合并到集成分支中 我想知道这种情况是否以及何时发生 我可以打字git log这将向我显示合并已经发生 但由于某种原因 它没有向我显示来自哪个功能分支 它只是说 将integration branch合并到integr
  • 在 Jenkins API 中,有没有办法找到上次构建的 git 提交?

    我想编写一个脚本来自动创建热修复的功能分支 为了做到这一点 我需要弄清楚如何查看当前构建中的最后一次提交 有没有办法从 Jenkins API 获取最后一次提交 git checkout b hotfix
  • 关闭 Sublime Text 3.2 中的 git 集成

    如果我想关闭 Sublime text 左侧装订线中的 GIT 集成 又名史莱姆绿线 我只需将其切换为 false 26 show git status false 但是 当在首选项中进行设置时 我收到错误 尝试解析设置时出错 意外的字符
  • Visual Studio 2010 中的源代码控制?

    在对 SO Google 和 MSDN 论坛进行了一些搜索之后 我感到很沮丧 因为对于一个看似显而易见的问题 甚至可能是一个愚蠢的问题 信息太少 我需要在 Visual Studio 2010 Professional 中使用源代码管理 我
  • git difftool 进行目录比较?

    是否可以使用 git difftool 命令来打开已更改文件和暂存 检查文件之间的目录比较 因此 理想情况下 如果 2 个文件已更改 它们将是唯一显示的 2 个文件 但在目录比较中 我读过关于让 git 并行给出所有文件差异的帖子 所以像
  • 从 git 中提取特定的提交/文件

    我在 git 存储库中进行了两次提交 并将它们推送到我的 git 服务器 两个提交是 在第一次提交中文件 A 被提交 在第二次提交中 文件 B 被提交 现在在另一台开发服务器上 我只想从 git 服务器中提取第一个提交或文件 A 这个怎么做
  • 将 git 存储库拆分为压缩的公共和初始私有

    我想在 Github 上开源一个项目 有相当多的提交 超过 2k 我会将它们压缩成一个 初始提交 以便从一个干净的代码库开始并隐藏一些历史内容 问题是 是否有可能 保留一个包含所有初始提交的私有存储库 其中会有一些秘密密钥 travis c
  • git 别名:多个命令、可变参数

    我经常发现自己输入以下内容 git push remote1 branch1 branch2 tag1 tag2 tag3 git push remote2 branch1 branch2 tag1 tag2 tag3 我更喜欢一个别名 我
  • 将远程存储库导入为具有完整历史记录的子目录

    我想将远程存储库作为具有完整历史记录的子目录进行合并和解耦 有多种方法和问题可以实现这一点 我的第一次尝试是使用subtree但它似乎没有重写文件的历史记录 所以我无法查看合并存储库的历史记录 接下来的尝试是手动合并它 就像 Seth Ro
  • 无法连接到存储库:执行 git 命令时出错:git ls-remote -h ***public github url *** HEAD

    I have installed jenkins on ec2 instance when i try to configure my public github repo with the ec2 instance then it thr
  • 当 TLSv1 因“忽略未知记录”而失败时,使 git 恢复为 SSLv3

    无法使用git git clone https github com foo bar fails fatal unable to access https github com foo bar Unknown SSL protocol er
  • 单个分支的 Git 导出

    我在本地的 git 存储库上工作 它有各种分支 例如开发分支 一些用于实验更改的分支等等 当然还有主分支 我想设置一个公共 嗯 确实是一个局域网的东西 最好说 共享 存储库来仅包含主分支 如何导出该分支以便我可以将其复制到目标文件夹 谢谢
  • 如何从“分离头状态”恢复提交?

    我检查了另一个有更新的分支 然后做了一些更改 切换回主 git 现在更改消失了 我可以把它们找回来吗 终端基本上是 git commit detached HEAD 7c09e17 Fixed some stuff files change
  • Github 操作 - 错误:进程已完成,退出代码为 1

    我正在尝试设置 github 操作来部署我的应用程序 My bash 启动部署过程的脚本如下所示 bin sh set e vendor bin phpunit git push true git checkout production g
  • git:复制一个版本来玩一下

    在开发应用程序时 我希望在某个时候拥有一份单独的工作副本 以便尝试进行一些更改 这些更改并不意味着要进行 只是玩玩 尝试各种可能性 是什么 best 如何做到这一点 我发现了以下可能性 但想得到比我更有 git 经验的人的建议 我可以用gi
  • 我应该在 Heroku 上部署 Ruby on Rails 应用程序吗?

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 关于我自己的一些情况 我今年 24 岁 去年从北卡罗来纳州立大学毕业 获得了分析硕士学位 统计 数学之类的 我没有很强的编程背景 这对我的问题非
  • git commit 保存 vim 文件时出错

    我正在遵循简单的 git 指南nettuts 简易 git 指南 http net tutsplus com tutorials other easy version control with git 我在我的中初始化了一个空的 git 实
  • .gitignore 在提交、推送或到达服务器时起作用吗?

    说我有一个 gitignore忽略所有 class files 当 时这些文件是否远离远程源 我在本地提交 添加我的文件 我的吗git寻找一个 gitignore当使用添加 提交时 并根据它所说的内容 从提交中删除内容 我推动我的承诺 做g
  • Sublime 中的文件内容不会因 Git 分支更改而更改

    如果在 Sublime text 2 中打开一个文件 然后切换到终端中对该文件进行更改的分支 则在通过单击编辑器选择编辑器之前 文件内容不会在 Sublime text 2 中更新 如何自动神奇地改变它 Sublime Text 没有任何内
  • Visual Studio 2022 git 错误无法与 {0} 端口 {1} 协商:未找到匹配的主机密钥类型。他们的报价:ssh-rsa

    将 VS 2022 更新到 17 1 1 后 我遇到了 Git 问题 我无法评论 例如 fetch 或 pusl 我收到一条消息 从原点获取 无法与 0 端口 1 协商 未找到匹配的主机密钥类型 他们的报价 ssh rsa 无法从远程存储库

随机推荐

  • LinkedIn 抄写员 OAuth 库无法允许访问 LinkedIn 帐户

    我正在编写一个概念验证应用程序 以使用以下方式连接到 LinkedInscribeOAuth 库 我可以获得请求令牌 但无法将其交换为访问令牌 我反复收到oauth problem permission unknown尽管我点击了 Link
  • 在为 Android 工件生成的 POM 中排除 Kotlin stdlib 的 testImplementation 依赖项

    鉴于旧的 Android 库已弃用 我正在将其从 jcenter 迁移到 mavenCentral 所有实际的库模块都是用 Java 编写的 但其中一些模块的测试是用 Kotlin 编写的 在升级 到 AS 4 1 3 Gradle 6 8
  • 实时人脸检测不起作用

    这段代码没有显示相机中人脸的检测 即使没有错误 我希望在相机中实时检测到脸部 周围有红色乡绅 但我认为我没有正确放置代码 或者我应该在 Viewdidload 或其他东西中放置一些东西 import UIKit import CoreIma
  • cUrl - 获取 html 响应正文

    我确信这相当简单 我正在使用下面的函数来检索网站原始 html 为了解析它 在测试期间 我决定在 stackoverflow com 上运行我的代码 Chrome 不是获取 html 响应 而是打印出实际的站点 而不是将 html 分配给它
  • Java RegEx 不区分大小写吗?

    在Java中 当执行replaceAll来查找正则表达式模式时 例如 replaceAll i b w b s 1 b 1 删除重复的连续的不区分大小写的单词 例如测试测试 我不确定我把 i 我读到它应该在开头 但是如果我把它拿出来 那么我
  • 在 R 中如何舍入为 1、1.5、2 等而不是 1、2 或 1.1、1.2、1.3?

    我想将数字四舍五入到最接近的一半或整数 所以我想将 4 2 舍入到 4 4 3 到 4 5 以及 4 8 到 5 我使用舍入选项尝试了一些操作 gt round 4 34 1 1 4 3 gt round 4 34 1 4 gt round
  • Spark 是否可以设置默认存储级别?

    在 Spark 中 可以显式设置 RDD 和 Dataframe 的存储级别 但是否可以更改默认存储级别 如果可以 如何实现 如果不是 那为什么不可能呢 到处都有类似的问题 但答案只是指解决方案是显式设置存储级别 而无需进一步解释 我建议看
  • ggplot2 在 x 轴上的年变量末尾不断添加 0.5

    所以我试图制作一个分组条形图Year在 x 轴上和Number在 y 上 分组为Nationality并由面Municipality 下面是数据 2017 年在中间 所以没有显示 gt head pres munic Year Munici
  • Angular UI 路由器和使用动态模板

    我正在尝试使用 rootscope 值加载模板文件 就其名称而言 我有一个初始化控制器 它将 rootScope template 设置为 whatever html 然后我的路线如下 stateProvider state url acc
  • 强制光标移动到页面的一侧

    我想知道这是否可能 我想要一个链接 上面写着 单击我 下面还有一张图片 该图片也超链接到另一个页面 在用户尝试将鼠标悬停在 单击我 链接上之前 光标应该在到达 单击我 链接之前自动移动到图像 顺便说一下 这不会成为真正网站的一部分 这只是个
  • 将长模板文字行换行为多行,而不在字符串中创建新行

    在 es6 模板文字中 如何将长模板文字包装为多行而不在字符串中创建新行 例如 如果您这样做 const text a very long string that just continues and continues and conti
  • 如何根据状态栏中设备的时间更新时间?

    所以我有以 HH mm 格式显示时间的标签 该标签将每隔一分钟定期更新一次 我实际上可以通过使用来做到这一点timer就像下面的代码 class HomeVC UIViewController IBOutlet var timeLabel
  • Excel 索引匹配 - 具有多个结果的部分字符串

    我正在尝试调整我在在线示例电子表格中找到的这段代码 但我不太明白它 原始电子表格基本上基于用户定义的查找执行索引 匹配 并在串联列表中整齐地列出匹配项 示例电子表格的输出如下所示 https i stack imgur com DyahB
  • Django 通过电子邮件发送错误

    我一直在努力让电子邮件在 Django 中工作以进行日志记录以及 500 和 404 错误 但我一生都无法让它工作 我有DEBUG False以及所有其他设置 我的电子邮件设置如下 EMAIL HOST host EMAIL PORT 58
  • Objective-C 生成位于给定 cgrect 中的随机点

    我的要求是在给定区域生成一个随机点 即我有一个具有一定空间的 Cg 矩形 我需要在这个矩形中生成一个随机点 在这种情况下我该如何进行 CGPoint randomPointInRect CGRect r CGPoint p r origin
  • 在 Struts 2 中使用 getText() 获取属性

    我正在使用 JSP 开发 Struts2 框架 In my samplePrj properties文件 其中 com samplePrj Successmessage Saved Successful 是一个属性 我需要在我的 JSP 页
  • (在 Ubuntu 服务器上使用“imgkit”)wkhtmltopdf:无法连接到任何 X 显示器

    我有一个在远程 Ubuntu 服务器上运行的 python 脚本 在我的代码中的某个时刻 我创建了一个 HTML 文件 然后将其转换为 png 因此 我选择使用 imgkit 它能很好地完成这项工作 在将 python 脚本上传到远程 Ub
  • 如何获取已安装应用程序的大小?

    我正在尝试计算已安装应用程序的大小 我找到了答案here 我在一些设备上测试过 除了三星Galaxy Note3 4 3 之外 没有任何问题 我收到此错误 java lang NoSuchMethodException getPackage
  • 如何保护Android应用程序免遭盗窃和修改应用程序本身?

    这里有一篇关于最近在 Android 市场上发生的骗局的精彩报道 http www theregister co uk 2011 12 12 android market malware 有人从 root 手机上复制了一些流行的游戏 apk
  • git rebase:重新调整的提交仍在索引中吗?

    当我读到git 变基 我明白重新定位的提交应该丢失 我说应该是因为我注意到 知道重新调整的提交 sha 我可以回忆起来 假设我有以下三个提交 A gt B gt C where C的啥是cshaid 然后 如果我交互地变基fixing up