你更新过哪些变更集的mercurial和git商店历史记录?

时间:2018-06-09 20:49:34

标签: git mercurial revision-history

mercurial和git会在最近一次调用update/checkout之前存储您所更改集的记录吗?这段历史存储在某个地方吗?

具体的用例是,如果您pull/fetch项目的新工作,并遇到一些新的更改问题。这样的历史记录可以让您更新回原来的位置,以便在没有反复试验的情况下撤消更改。

1 个答案:

答案 0 :(得分:3)

作为分发版,Mercurial不会存储您之前检查过哪些修订版的信息 - 但是Mercurial 3.9中有一个名为Journal的实验性扩展,如果启用,则会启用。另请注意,hg pull不会更新为任何新引用,除非您告诉它,即它更像git fetch而不是git pull 1功能

Git会将此信息存储在 reflog 中,以获取特殊引用名称HEAD 2 这取决于启用的reflog ;你可以禁用它们。正常工作存储库的默认设置是启用它们。

git mergegit rebase(即git pull的后半部分)后,HEAD@{1}会提取reflog中的第一个条目。假设您成功进行了合并或变基(因此HEAD的前一个值是旧的引用),那就是前一个HEAD。如果您执行了rebase,并且失败并需要人工协助,则先前的HEAD将进一步返回到reflog中,但ORIG_HEAD将指向上一次提交。当前分支本身的reflog也很有用。

1 幸运的是,世界上很少有像git pull这样的东西,因为git pull是一个设计糟糕的便利工具,它通常比方便更不方便

2 HEAD是否真的是一个参考名称是有争议的。对于reflog目的,它是。