git是否记录了分支头的历史?

时间:2011-05-07 02:44:27

标签: git branch refs

Git分支头和标记是提交的指针,这些指针可以隐式移动(在commit之后)或显式移动(在branch -m之后)。

Git是否记录了这些指针状态的历史记录?

我至少看到两个原因:

  • 两天前查看回购状态,包括分支负责人指出的位置。
  • 确保没有历史记录丢失,因为某人以某些提交无法访问的方式移动了分支头。

请注意,Mercurial中可以使用上述内容,因为它会在每次提交中存储分支名称。

再次,在Git中是.git / refs / version控制的内容,还是有办法让它们如此?

(我正在尝试为一个团队决定Mercurial或Git,我想确保共享仓库的所有更改,包括refs都被记录下来。我不关心开发人员对他们的私人回购做什么。)

谢谢。

3 个答案:

答案 0 :(得分:7)

它们未进行版本控制,但reflog功能会保留您可用于撤消错误的本地历史记录。但是,如果有人“倒退”一个分支头从最后丢弃一些提交,当另一个开发人员试图更新他们对该分支的签出时,它会立即变得明显,因为Git将拒绝在本地进行更改,除非{{1} } 用来。您可以轻松地将提交返回到共享存储库。

答案 1 :(得分:1)

像Gerrit这样的企业级Git服务器有扩展,可以对您的分支历史进行版本控制。如果以非快进方式删除或更新分支(push -f) 它将在特殊引用下支持以前的版本,以便在需要时可以恢复它们,并且不会被垃圾收集修剪。出于法律原因,Gerrit管理员仍可以根据需要删除所选提交。

答案 2 :(得分:1)

有两种方法:

git reflog

git log -g

与第一种情况相同:

git log --oneline -g