什么是Git的参考?

时间:2017-10-25 23:47:44

标签: git

我在尝试推送时收到的错误表明我参考了'git push --help'中的'关于快进的说明'

本说明包含段落

  

当更新改变一个曾经指向提交A指向另一个提交B的分支(或更多通常是一个ref)时,当且仅当B是A的后代时,它才被称为快进更新。

我猜“更新”意味着对我所做的代码的更改以及这些更改将在我当前的分支中(因此我有一个更改的分支)但是它的意思是什么“(或更多)一般,参考)“?

我在this glossary

中找不到“ref”这个词

我可以在.git目录中看到名为“refs”的文件夹

什么是参考?

2 个答案:

答案 0 :(得分:4)

改为使用the actual Git glossary

  

refs/开头的名称(例如refs/heads/master),指向object name或其他参考...

请注意,分支名称(如master)只是以refs/heads/开头的引用(引用)。标签都以refs/tags/开头。所以 reference 是一个通用的表单,它涵盖了分支名称,标记名称和更多名称。

  

我猜“更新”意味着对我所做的代码的更改...

(强调我的)

否:这里的想法是像分支名这样的引用包含提交哈希;正在更新的内容是包含的哈希值。如果refs/heads/master现在包含ID 932b573406fda922d8edbecb0d7f9ad3ce9155ec,并且您要求Git将其更新为包含d35688db19c9ea97e9e2ce751dc7b47aee21636b,那么Git可以检查提交932b573406fda922d8edbecb0d7f9ad3ce9155ec是否为提交d35688db19c9ea97e9e2ce751dc7b47aee21636b的祖先。如果是这样,此更新是快进的。

每次提交都是纯快照。 Git不会比较提交快照内容,除非并且直到您要求它这样做。大多数情况下,它会查找commit graph ,它是通过将每个提交节点(由其哈希ID标识)连接到其父节点(由其哈希ID标识)而形成的。

答案 1 :(得分:4)

Ref 基本上是 Git 的机制来表示分支、对象的 id(也称为对象名称)、标签等,甚至是另一个 ref(称为符号引用)

来源: https://www.atlassian.com/git/tutorials/refs-and-the-reflog https://git-scm.com/docs/gitglossary