Git分支详细信息
您能告诉我如何确定Git分支的以下细节吗Git分支详细信息,git,Git,您能告诉我如何确定Git分支的以下细节吗 谁创建了分行 创建分支时 新分支是在哪个分支上创建的 你对分支机构的想法太过信任了。Git不关心分支;Git关心提交。但是为了说这一点,我们必须首先停止并定义分支这个词。在本段中,我所说的“分支”是一个分支名称,如master或develope或feature/tall。对于Git来说,这些名称只有一个功能:记录提交的原始散列ID Git还有其他实体,人们可以并且确实称之为“分支”。看 在任何情况下,Git中的分支名称都包含一次提交的哈希ID。这实际上
- 谁创建了分行
- 创建分支时
- 新分支是在哪个分支上创建的
- 你对分支机构的想法太过信任了。Git不关心分支;Git关心提交。但是为了说这一点,我们必须首先停止并定义分支这个词。在本段中,我所说的“分支”是一个分支名称,如
master
或develope
或feature/tall
。对于Git来说,这些名称只有一个功能:记录提交的原始散列ID
Git还有其他实体,人们可以并且确实称之为“分支”。看
在任何情况下,Git中的分支名称都包含一次提交的哈希ID。这实际上非常有用:对我们人类来说,Git哈希ID看起来像是随机垃圾,对Git本身来说也是如此。但这就是他们自己所拥有的一切。重要信息都存储在其他地方,主要存储在提交本身中
Git非常关心提交。提交存储您要查找的大部分数据:谁创建了这些数据、时间以及其他早期提交的数据
分支名称不存储您要查找的任何数据。他们没有创建者信息。他们也没有自己的历史(但我们稍后会看到更多)。这其中有一个重要原因
与ClearCase不同,Git是一个分布式版本控制系统。在ClearCase中,有一个中央托管存储位置:卷对象库或VOB。个人用户去中央存储,从中获取东西,然后将东西放回中央存储。要做到这一点,这些用户必须共享VOB的名称。所以,如果美国之音想把某件事叫做布鲁斯,那么,其他人也可以把它叫做布鲁斯
使用Git,每个存储库都是独立的。每个人都有自己的分支名称,独立于其他人的分支名称。Git中唯一真正通用的名称是哈希ID。每个人都同意哈希ID:在每个Git存储库中,哈希ID为08da6496b61341ec45eac36afcc8f94242763468
的提交是08da6496b61341ec45eac36afcc8f94242763468
。其他提交不能具有ID08da6496b61341ec45eac36afcc8f94242763468
如果您和我计划将我们的存储库连接在一起,我们可能希望时不时地协调我们的分支名称,我们可以做到这一点。但是我的存储库有我的分支名称,而你的有你的。您是所有分支名称的创建者。我实际上无法在您的存储库中创建分支名称。我所能做的就是通过它丑陋的散列ID向您提交一个提交,然后让您的Git创建或更新一些名称。1
更常见的是以另一种方式进行设置:我为您提供对我的存储库的只读访问。您可以运行git fetch
让您的git通过Internet调用我的git。你的Git问我的Git:嘿,其他Git,你有什么分支名称?与这些分支名称一起使用的通用共享哈希ID是什么?My Git为您提供了我的姓名和哈希ID列表,您的Git从此开始工作:
- Torek的Git说他的
大师是
。我有a123456…
,所以我很好a123456…
- Torek的Git说他的
是dev
。嗯,我没有b789abc…
。也许我应该通过它的散列ID请求提交b789abc…
origin
——尽管您可以而且事实上必须为您要调用的每一个Git设置一个不同的昵称。名称origin
只是您从中进行初始克隆的Git的默认名称
因此,让我们假设您让Git调用my Gitorigin
。您的Git有一个完整的my所有分支及其相应(单个)散列ID的列表。因此,您的Git现在创建或更新了一个origin/*
名称,对应于我的Git的名称。我的Git告诉你的Git我的主控
是a123456…
,所以你的Git创建或更新你的源/主控
指向提交a123456…
。你要么已经有了这个提交,所以我的不必把它发送给你,要么没有,只是要求它,我的Git发送了它。我的Git告诉你的Git我的<代码>开发是<代码>b789abc…;你的Git现在有这个提交;Git创建或更新您的origin/dev
以指向b789abc…
再说一次,这是关键。提交和散列ID是Git的通用货币。其他人的分支名称。。。好吧,这些是其他人要担心的。我们将复制它们,并将它们保存为远程跟踪名称,但它们不是分支名称。我的分支名称是我的;你的分行名称就是你的。无论某人使用什么Git,他们的分支名称都是他们的,而不是其他任何人的
1你最好记录下是我做的更新-r