git - mercurial 和 git 是否存储您更新到的变更集的历史记录?
问题描述
mercurial 和 git 是否会记录您在最近调用之前所做的变更集update/checkout
?该历史记录是否存储在某个地方?
一个具体的用例是,如果您pull/fetch
在一个项目上进行新工作并遇到一些新更改的问题。这样的历史记录可以让您更新回原来的位置,以便在不反复试验的情况下逆转更改。
解决方案
在分发时,Mercurial 不会存储有关您之前签出的修订版本的信息,但从 Mercurial 3.9 开始有一个名为Journal的实验性扩展,如果启用,它会存储。还要注意,hg pull
除非您告诉它,否则它不会更新到任何新的引用,即,它git fetch
比它更像git pull
. 1
Git 确实将此信息存储在特殊参考名称的reflogHEAD
中。2 这确实取决于启用的引用日志;你可以禁用它们。正常工作存储库的默认设置是启用它们。
在git merge
or之后git rebase
(即 的后半部分git pull
),HEAD@{1}
提取 reflog 中的第一个条目。假设您进行了成功的合并或变基(因此之前的值HEAD
是旧引用),那么您将获得之前的HEAD
. 如果你做了一个 rebase,它失败了并且需要人工帮助,那么前一个HEAD
会在 reflog 中更远,但ORIG_HEAD
会指向上一个提交。当前分支本身的 reflog 也将很有用。
1幸运git pull
的是,世界上很少有东西像git pull
2是否HEAD
真的是一个参考名称是有争议的。出于 reflog 的目的,它是。
推荐阅读
- azure-active-directory - 在 Blazor 服务器中使用 Identity.Web
- json - 如何从 postgres 的 jsonb 列中检索多个数据?
- java - 如何使用 Java 等待元素在 Selenium 较新版本中可见?
- c++ - Cmake 构建两个项目
- prolog - 在prolog中找到一条循环路径
- javascript - Visual Studio Code - 在保存时编译 Javascript
- python - 我无法在 python 中使用 json.loads() 从文件中加载字典
- python - 如何从下午 6:00 到上午 9:00 之间的 pandas 数据框中删除日期时间索引值?
- kdb - 函数的值,kdb+
- azure - 触发 Azure Devops 中项目中存在的另一个构建