1

假设我有一个 git 存储库,我从不提交更改,只使用它来读取其内容。我时不时地从原始远程拉动以了解最新的变化。

有没有办法让我知道自从我克隆存储库以来我检查了哪些版本?

为什么我需要这个?

我遇到的问题是我很少从远程拉取并且项目发展迅速,所以我想跟踪我过去使用过(即签出)的提交,以防我想恢复我的工作目录到我知道它对我有用的状态。请记住,我只对我实际签出的提交感兴趣。

更新: 看起来我可以用标签(拉之前的标签)来做到这一点,虽然我不知道如何让 git只列出我的标签。不过,我想知道 git 是否已经为我记录了我签出的提交。

4

7 回答 7

6

您可以为此使用 reflog,但仅限于其限制(有时会被清除)。例如 - 对 msysGit 的本地克隆进行快速测试:

$ git log -g --oneline --abbrev-commit --grep-reflog "pull:"
53e28dd HEAD@{7}: pull: Fast-forward
947ccf6 HEAD@{9}: pull: Fast-forward
6bf64a4 HEAD@{10}: pull: Fast-forward
20344ae HEAD@{15}: pull: Merge made by the 'recursive' strategy.
31dd6ff HEAD@{36}: pull: Fast-forward
b4546cc HEAD@{37}: pull: Fast-forward
fd6f8d0 HEAD@{38}: pull: Fast-forward
4fc3780 HEAD@{41}: pull: Fast-forward

这显示了过去几个月我碰巧在这个系统上“拉”的提交 ID。git log -g是更详细的版本git reflog

如果您只是做一个git log -g,您可能会在提供的集合中看到更合适的选择。结帐可能对您有用。

于 2013-01-09T23:37:51.943 回答
1

参考资料@{-<n>}(例如@{-1}@{-2}等)将告诉您在当前结帐之前签出的参考资料。您也许可以解析这些列表。

于 2013-01-09T23:36:32.127 回答
0

是否给你你正在寻找的东西git statusgit log

于 2013-01-09T23:11:22.753 回答
0

s --authorgit log开关做你想做的事吗?

于 2013-01-09T23:18:12.583 回答
0

不确定我是否理解但git reflog显示了更改分支尖端的本地更改的历史记录。

这可能是您正在寻找的东西。但是,历史记录的生命周期有限,并且会git gc擦除较旧的条目。

于 2013-01-09T23:20:18.260 回答
0

我相信可以通过rebase. 您想要一个special_master跟踪master但重新设置基准而不是在拉取时合并。它包含的唯一提交是您pull在某个时候明确编辑的提交。

于 2013-01-09T23:39:00.273 回答
0

这看起来像是关于您在 git 中查看的内容的元信息。这超出了 git 的范围。您可以包装 git 命令(就像git 成就所做的那样)并具有辅助存储库版本 HEAD 文件和 HEAD 指示第一个 repo 的 ref 文件)

默认情况下,Reflog 仅存储 90 天的信息。这可以改变。但是,如果您重新克隆,则会丢失此信息。

于 2013-01-10T00:02:42.580 回答