这些词在 Git 中是啥意思:Repository、fork、branch、clone、track?

Posted

技术标签:

【中文标题】这些词在 Git 中是啥意思:Repository、fork、branch、clone、track?【英文标题】:What do these words mean in Git: Repository, fork, branch, clone, track?这些词在 Git 中是什么意思:Repository、fork、branch、clone、track? 【发布时间】:2011-02-24 09:38:58 【问题描述】:

老实说,我不清楚这里的语义。它们都是关于代码+历史单元的副本/变体,但过去我不确定我能说。这个逻辑结构是否在某处解释过?

【问题讨论】:

我建议阅读 Pro Git 书籍的前几章 (progit.org/book)。 +1。许多 git 教程向您展示了如何执行某些任务,而没有解释某些单词的含义或 git 的工作原理。寻求解决这些主题的资源是一个合理的问题。 希望我能 +1 丹尼尔的评论更多。虽然某些术语(例如存储库)的含义应该很明显,但它们的关系并不总是(分支与分叉),并且真正的含义很容易被习惯于集中式 VCS 的人误解。此外,看看 Pro Git 的“什么是分支?”部分 - 基本用户真的想了解 blob 和树,还是只想定性地了解分支是什么? @DanielStutzbach 可以提交关于书中未明确内容的 cmets。 (我不知道这样说的正确术语。)我已经做到了,我说过这本书需要定义什么是存储库。我同意从非常了解某事的人那里获得概念性材料是相当困难的。那本书(目前)讨论了数据库,但没有定义它们在这种情况下是什么,也没有提到存储库是什么。 【参考方案1】:

存储库只是存储您的工作历史的地方。它通常位于工作副本的 .git 子目录中 - 您正在处理的文件的最新状态的副本。

要分叉一个项目(在某个时间点从某人的存储库中获取源代码,并对其应用您自己的不同更改),您将克隆远程存储库以创建它的副本,然后在您的本地存储库并提交更改。

在存储库中,您有分支,它们实际上是您自己的存储库中的分支。您的分支将在您的存储库中有一个祖先提交,并且会随着您的更改而偏离该提交。您可以稍后合并您的分支更改。分支让您可以同时处理多个不同的功能。

您还可以跟踪远程存储库中的各个分支。这允许您从另一个人的分支中提取更改并将它们合并到您自己的分支中。如果您和朋友一起开发新功能,这可能会很有用。

网上有很多很棒的 git 书籍。查看ProGit 和Git Magic 以开始使用,以及官方教程和社区手册。

【讨论】:

当然阅读F手册和教程是基础。但在我看来,这似乎是对整个事情的一个很好的总结。非常感谢! 请注意,您可以将本地工作目录切换到新分支(“git checkout ”)。在这种情况下,本地工作目录的文件将被您切换到的分支的内容所取代。但是您不会丢失您的工作:Git 将您在上一个分支上所做的所有已提交更改(“git commit”)存储在 Git“数据库”(隐藏的 .git 文件夹)中,并允许您切换回您的文件。跨度> 我认为需要特别提到的是,从历史上看,无论您使用哪种 VCS,分叉和分支都被视为两个独立的东西。分支被认为是开发人员之间有利且隐含的协议。分叉更为严重,因为它暗示从事项目的开发人员在某些事情上没有达成一致并决定分道扬镳。然后,在双方达成协议后,成功的分叉通常会被合并回一个项目。从那时起,Git(和 GitHub)模糊了这些术语,这两个术语基本上代表相同的想法,但方式不同。 所以存储库中没有项目的文件?你说存储你工作历史的地方。这就是全部?只有文件的历史,而不是文件本身?【参考方案2】:

我将用 RTFM 回答我自己的问题。

但是,请阅读 this 精美手册。正如作者所说:

“我由此得出的结论是,只有了解 Git 的工作原理,才能真正使用 Git。仅仅记住你应该在什么时间运行哪些命令在短期内会起作用,但你被卡住或者更糟的是,破坏某些东西只是时间问题。

“不幸的是,Git 上的现有资源中有一半只是采用这种方法:它们会引导您了解何时运行哪些命令,并期望您只要模仿这些命令就可以做得很好。另一半确实涵盖了所有概念,但据我所见,它们以假设您已经了解 Git 工作原理的方式解释 Git。”

【讨论】:

这个介绍好像已经移到sbf5.com/~cduan/technical/git了。原来的 URL 现在仍然有效。 这在上下文中是正确的。如果您需要立即提高工作效率,或者真的只是签入代码,则可以不深入了解 git 的工作原理。教程很好。这就是我进入git的方式。但是,如果或当您需要更高级(例如创建分支、fork、rebase 和其他更高级的任务)时,您必须了解 git 的工作原理,尤其是当您的背景处于集中式源代码控制中时。【参考方案3】:

This GoogleTechTalk 是对 Git 的精彩介绍,可以在学习语言的同时了解幕后实际发生的事情。它是由一位非常早期的 Git 贡献者提供的,他在 2007 年发表了这个演讲,作为介绍 Git 的一种方式。如果您观看此演讲,您不仅会知道每个单词是什么,例如 repository、fork、branch 等,而且还会知道每个单词在创建、合并等时在幕后发生了什么。

地址很长,但信息量很大。它还将 Git 与其他版本控制系统进行了对比,因此您可以深入了解 Git 的创建方式以及与其他控制系统相比的比较优势。即使谈话很老,但起床和跑步非常有帮助。在我进入手册之前,我会看这个。我相信,结果会变得更有意义。

【讨论】:

以上是关于这些词在 Git 中是啥意思:Repository、fork、branch、clone、track?的主要内容,如果未能解决你的问题,请参考以下文章

这些花括号在 python Django 中是啥意思? **

手机的XDM是啥意思

M1 在 Maven 存储库中是啥意思?

ContactsContract.Contacts.IN_VISIBLE_GROUP 在 Android 中是啥意思?

NN VBD IN DT NNS RB 在 NLTK 中是啥意思?

Yolov4.conv.137 在 Yolov4 暗网中是啥意思?