Git:自从初始化/克隆以来我已经*检查过的提交历史

时间:2013-01-09 23:08:16

标签: git

假设我有一个git存储库,其中从不提交更改,而仅使用它来阅读其内容。我不时地从原点遥控器拉出以保持最新的更新。

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

为什么我需要这个?

我遇到的问题是我很少从遥控器拉出来并且项目进展很快,所以我想跟踪我过去使用过(即检出)的提交,以防我想要< strong>恢复我的工作目录到我知道它适合我的状态。请记住,我只对我实际检查过的提交感兴趣。

更新 看起来我可以使用标签(我拉前标签),但我无法弄清楚如何获取git to only list my tags 。不过,我想知道git是否已经跟踪我已经检查过的提交。

7 个答案:

答案 0 :(得分: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 -ggit reflog的更详细版本。

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

答案 1 :(得分:1)

引用@{-<n>}(例如@{-1}@{-2}等)会告诉您在当前结帐之前签出的参考文件。您可以解析这些列表。

答案 2 :(得分:0)

git statusgit log不能提供您想要的内容吗?

答案 3 :(得分:0)

git logs --author switch能做你想做的吗?

答案 4 :(得分:0)

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

这可能就是你要找的东西。但是,历史记录的生命周期有限,git gc会删除较旧的条目。

答案 5 :(得分:0)

我相信可以通过rebase实现这一目标。你想要special_master跟踪master,但需要重新绑定而不是合并拉。它将拥有的唯一提交是您在某些时候明确pull编辑的提交。

答案 6 :(得分:0)

这看起来像是关于你在git中看到的内容的元信息。这超出了git的范围。你可以包装git命令(很像git achievements)并且有一个辅助存储库版本HEAD文件和HEAD指示第一个repo的ref文件)

默认情况下,Reflog仅存储90天的信息。这可以改变。但是,如果再次拒绝,则会丢失此信息。