假设我有一个git存储库,其中从不提交更改,而仅使用它来阅读其内容。我不时地从原点遥控器拉出以保持最新的更新。
有没有办法让我知道自克隆存储库以来我检查过哪些版本?
我遇到的问题是我很少从遥控器拉出来并且项目进展很快,所以我想跟踪我过去使用过(即检出)的提交,以防我想要< strong>恢复我的工作目录到我知道它适合我的状态。请记住,我只对我实际检查过的提交感兴趣。
更新 看起来我可以使用标签(我拉前标签),但我无法弄清楚如何获取git to only list my tags 。不过,我想知道git是否已经跟踪我已经检查过的提交。
答案 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 -g
是git reflog
的更详细版本。
如果你只是做git log -g
,你可能会在提供的集合中看到更适合的选择。结帐可能对您有用。
答案 1 :(得分:1)
引用@{-<n>}
(例如@{-1}
,@{-2}
等)会告诉您在当前结帐之前签出的参考文件。您可以解析这些列表。
答案 2 :(得分:0)
git status
或git log
不能提供您想要的内容吗?
答案 3 :(得分:0)
git log
s --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天的信息。这可以改变。但是,如果再次拒绝,则会丢失此信息。