gpt4 book ai didi

git rebase : rebased commit still in index?

转载 作者:太空狗 更新时间:2023-10-29 13:49:02 27 4
gpt4 key购买 nike

当我读到 git-rebase 时,我知道重新设置的提交应该丢失。我说应该是因为我注意到,知道 rebased 提交 sha,我可以记忆起它。
假设我有以下三个提交

A -> B -> C

C 的 sha 是 cshaid。然后,如果我使用 git rebase -i HEAD~2 交互地将 fixing-up C rebase 为 B 然后我用git log检查结果,我得到了预期的结果,意思是

A -> B'

其中 B' 的 sha 与 B 的 sha 不同。
然而,再次运行 git log cshaid 显示

A -> B -> C

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

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

最佳答案

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

相关 StackOverflow 问题:

关于git rebase : rebased commit still in index?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21384773/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com