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:重新调整的提交仍在索引中吗? 的相关文章

  • 如何升级 Windows 中 git svn 使用的 SVN 版本?

    我的公司正在将SVN升级到1 7 检查git svn version显示正在使用的SVN版本是1 4 6 我想获得 git svn 使用的 SVN 版本接近 1 7 但是 我没有看到有关更新 git svn 使用的 SVN 版本 在 Win
  • 致命:不是 git 存储库(或任何父目录):.git [重复]

    这个问题在这里已经有答案了 当我尝试推送 github com 上的现有存储库时 当我输入命令时 网站提示我将其输入终端 我收到了以下致命错误消息 Not a git repository or any of the parent dire
  • git Blame:合并后正确的作者

    GIT 合并引入了新的提交 这会导致 git Blame 问题 合并的行似乎是由进行合并的开发人员提交的 我可以理解这种情况冲突的变化 因为他解决了冲突 但是有没有办法让非冲突线路不发生这种情况呢 一些 git Blame 的选择 如果没有
  • 按时间顺序将多个文件夹提交到 git 中

    我有数百个网站备份 每个文件夹一个 我想将它们放入 git 存储库中 每个备份作为一个版本 这些变化主要涉及图像文件和每天 2 个数据库备份 大小约为 25 GB 并且不断增加 有没有办法告诉 git 获取其中一个文件夹并将其提交到存储库中
  • 在centos上设置jenkins:ssh密钥和git的问题

    经历了很多问题 但似乎没有什么能解决我的问题 或者更准确地说 我不确定我是否正确地完成了整个事情 所以这里是 已安装centos 6 3操作系统 然后我按照以下指南安装詹金斯 https wiki jenkins ci org displa
  • 我在哪里? *(无分支)

    我已经熟悉了创建 合并和删除分支 我想知道我在哪里 这样我就不会将工作提交到错误的分支 我用git branch a看看我有哪些分支 我认为星号 显示我当前所在的分支 当我得到以下信息时 这意味着什么 no branch master or
  • Git post-receive - 如何检查推送的分支是否与主分支合并

    在我们的团队中 我们通常将所有任务推送到单独的分支中 然后发布经理审查这些分支并将它们合并到 主 分支中 有时团队成员忘记将他们的分支与主分支合并 在推送之前 所以我想做的是 在用户推送后输出一条消息 请与主分支合并 我想我需要检查一些内容
  • 您的分支比“origin/master”领先 3 个提交

    我在运行时收到以下信息git status Your branch is ahead of origin master by 3 commits 我读过其他一些帖子 解决这个问题的方法是运行git pull rebase但是 rebase
  • git 如何查找分支源自的提交哈希

    假设我从主分支分支到主题分支 然后在主题分支上进行了一些提交 是否有命令告诉我主题分支源自的主分支上的提交哈希 理想情况下 我不必知道我做了多少次提交 试图避免 HEAD 5 我已经用谷歌搜索过 但似乎无法找到答案 谢谢 use git m
  • 如何生成类似github的影响图?

    是否有一些程序 或者我错过的一些神奇的 git 插件 可以从 git 存储库获取影响图或类似的东西 而无需通过 github 就数据收集而言 我可以生成图表 我不确定从哪里开始编写自己的代码 我假设有一些标志我可以传递给 git log 来
  • 如何关闭分支而不将其从 git 的历史记录中删除?

    我想提交并关闭其分支 而不将其从历史中删除 有了水银我会commit close branch then update转到上一个 然后继续工作 有了 git 我很困惑 没有与 Git 中关闭分支完全相同的方法 因为 Git 分支比 Merc
  • 为什么 git-svn 应该积极搜索旧历史?

    当我运行 git svn clone s 时发生了一些奇怪的事情 尽管以下信息告诉我们不要惊慌 但我想知道为什么会出现这种 svn 错误 为什么这个路径不存在 是被别人删除了吗 如果是 为什么 git svn 应该积极搜索旧历史记录 Ini
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • Git 中的数据完整性?

    我现在已经多次听到提到 Git 提供数据完整性 但是 这是什么意思 据我所知 git 中的所有对象都是使用 SHA 1 校验和来访问的 并且该校验和是根据文件的内容计算的 这意味着如果文件发生更改 您将得到不同的校验和 但这如何提供数据完整
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • 合并后 Git 分支和提交历史记录

    我正在开发一个项目 单独 对于我开发的每个功能 我都会创建一个新分支 处理该功能 然后将其合并到 master 中 所以通常我不会同时在两个不同的分支上工作 也不会在一个分支上工作时接触master 当我合并一个分支时 我看到 使用gitx
  • 删除 Xcode 项目的源代码控制

    我在 Xcode 项目上使用源代码控制已经有一段时间了 但现在我不想使用源代码控制 如何从 Xcode 中的项目中删除源代码控制 有三种方法 方法 1 将禁用所有项目的源代码管理 方法 2 将删除所有项目的单个存储库的链接 方法 3 将删除
  • git am 和 git apply 有什么区别?

    Both git am https git scm com docs git am and git apply https git scm com docs git apply可用于应用补丁 看起来git am自动提交 而git apply
  • Git - 使用过滤器分支删除带有空变更集的提交

    如何使用 git filter branch 删除没有变更集的提交 我使用以下方法重写了我的 git 历史记录 git filter branch tree filter rm r f my folder f HEAD 效果很好 但现在我有
  • 是否可以使用“git gc”来打包引用日志对象?

    正如答案所暗示的https stackoverflow com a 32025729 https stackoverflow com a 32025729我已经配置了远程裸仓库 git config gc pruneExpire never

随机推荐

  • 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