我愚蠢地中止了一个被遗忘的变基,上面都有提交和未提交的更改,所以它把一切都搞砸了,类似于这样的问题。
我知道 reflog 并立即去查看那里,但它只包含一个无用的预变基状态的哈希。这是怎么回事?如何丢失引用日志条目?
编辑:为了回应下面的@kan,大致是我所做的:
git checkout badbranch
git rebase master
# CONFLICT, realized branch was bad and not needed anymore, but did not rebase --abort!
git branch -D badbranch
git checkout goodbranch
# some commits and edits here
git commit -av
# notices "you are currently rebasing" in the commit message
git rebase --abort # DOH
git reflog
引用日志现在仅包含a8f06a6 HEAD@{2}: rebase: updating HEAD
这在 Git 2.39(2022 年第 4 季度)中应该更清楚:
请参阅菲利普伍德 (><phillipwood
年=" _x0031_0=" 月=" _x0031_2=" _x0031_7=" C=" Hamano=" gitster
=" />(由泰勒·布劳 -- ttaylorr
-- 合并于 提交 8851c4b,2022 年 10 月 30 日)
rebase --abort
:改进引用日志消息签名者:菲利普·伍德
中止变基时,引用日志消息如下所示
rebase (abort): updating HEAD
这不是很有信息量.
通过提及我们要返回的分支来改进消息,就像我们在成功变基结束时所做的那样,使其看起来像。rebase (abort): returning to refs/heads/topic
如果在环境中设置了
GIT_REFLOG_ACTION
,我们不再从 reflog 消息中省略 "(abort)
.
在这种情况下,我们在开始和完成变基时不会省略"(开始)"和"(完成)",因此我们不应该省略"(中止)"。
因此,从 Git 2.39(2022 年第 4 季度)开始,git reflog
应该对您有更好的帮助。
此外,仍然使用 Git 2.39(2022 年第 4 季度),请避免设置GIT_REFLOG_ACTION
以提高音序器内部的可读性。
请参阅菲利普phillipwood
伍德的提交 0e34efb,提交 d188a60(2022 年 11 月 9 日).
(由 Junio C Hamano -- gitster
-- 合并于 提交 ff84d03,2022 年 11 月 23 日)
rebase
: 停止导出GIT_REFLOG_ACTION
签名者:菲利普·伍德
评论者: Ævar Arnfjörð Bjarmason
签名者:泰勒·布劳
现在结构
replay_opts
有一个reflog_action
成员,我们在启动变基时不再需要导出GIT_REFLOG_ACTION
.
如果用户设置了GIT_REFLOG_ACTION
那么我们在初始化时使用它reflog_action
.