git是否记录分支机构负责人的历史记录?

git是否记录分支机构负责人的历史记录?,git,branch,refs,Git,Branch,Refs,Git分支头和标记是指向提交的指针,这些指针可以隐式(在提交之后)或显式(在分支-m之后)移动 Git是否记录了这些指针的状态历史 我认为至少有两个原因: 看看两天前回购协议的状况,包括分行负责人指出的情况 确保不会因为某人移动分支头而导致某些提交无法访问而丢失历史记录 请注意,上述操作在Mercurial中是可能的,因为它在每个提交中存储分支名称 同样,在Git中,.Git/refs/version的内容是受控制的,还是有办法控制它们 (我正在尝试为团队选择Mercurial或Git,我希

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

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

我认为至少有两个原因:

  • 看看两天前回购协议的状况,包括分行负责人指出的情况
  • 确保不会因为某人移动分支头而导致某些提交无法访问而丢失历史记录
请注意,上述操作在Mercurial中是可能的,因为它在每个提交中存储分支名称

同样,在Git中,.Git/refs/version的内容是受控制的,还是有办法控制它们

(我正在尝试为团队选择Mercurial或Git,我希望确保记录对共享回购的所有更改,包括REF。我不在乎开发人员对他们的私有回购做了什么。)


谢谢。

它们没有版本控制,但该功能保留了本地历史记录,您可以使用它来撤消错误。然而,如果有人“倒带”一个分支头以从末尾丢弃一些提交,那么当另一个开发人员试图更新其分支的签出时,这一点将立即变得显而易见,因为Git将拒绝在本地进行更改,除非使用
--force
。此时,您可以轻松地将提交推回到共享存储库。

企业Git服务器(如Gerrit)有一些扩展,可以对分支历史进行版本化。如果分支以非快进方式被删除或更新(push-f) 它将在一个特殊的ref下返回以前的版本,以便在需要时可以恢复它们,并且不会被垃圾收集修剪。如果出于法律原因需要,Gerrit管理员仍然可以删除选定的提交

有两种方法:

git reflog
以及:

与第一种情况相同:

git log --oneline -g

注意:您还可以通过设置
receive.denynonfastforts
config设置来防止倒带。您的回答为我节省了很多时间。给你一个大+200!
git log --oneline -g