Git分支头和标记是提交的指针,这些指针可以隐式移动(在commit
之后)或显式移动(在branch -m
之后)。
Git是否记录了这些指针状态的历史记录?
我至少看到两个原因:
请注意,Mercurial中可以使用上述内容,因为它会在每次提交中存储分支名称。
再次,在Git中是.git / refs / version控制的内容,还是有办法让它们如此?
(我正在尝试为一个团队决定Mercurial或Git,我想确保共享仓库的所有更改,包括refs都被记录下来。我不关心开发人员对他们的私人回购做什么。)
谢谢。
答案 0 :(得分:7)
它们未进行版本控制,但reflog功能会保留您可用于撤消错误的本地历史记录。但是,如果有人“倒退”一个分支头从最后丢弃一些提交,当另一个开发人员试图更新他们对该分支的签出时,它会立即变得明显,因为Git将拒绝在本地进行更改,除非{{1} } 用来。您可以轻松地将提交返回到共享存储库。
答案 1 :(得分:1)
像Gerrit这样的企业级Git服务器有扩展,可以对您的分支历史进行版本控制。如果以非快进方式删除或更新分支(push -f) 它将在特殊引用下支持以前的版本,以便在需要时可以恢复它们,并且不会被垃圾收集修剪。出于法律原因,Gerrit管理员仍可以根据需要删除所选提交。
答案 2 :(得分:1)
有两种方法:
git reflog
和
git log -g
与第一种情况相同:
git log --oneline -g