比较'git branch'和'git ls-remote'进行公开回购的裸仓库克隆,以及裸机的非裸仓库克隆

时间:2011-11-24 14:17:12

标签: git

我将公共存储库(在本例中为Pressflow / Drupal)克隆到我们内部共享存储库的裸存储库中,然后将其克隆到非裸存储库中以在开发人员计算机上使用。我是一个git新手,并试图更好地理解这些东西,所以我在两个存储库上运行了一些命令,如'git branch'和'git ls-remote',看看发生了什么,以下是输出。如果知道这些东西的人可以帮我解释为什么这些命令在一个存储库中的输出与另一个存储库中的输出不同,我将不胜感激。首先,这是在开发人员非裸(包含工作副本)存储库中看到的内容:

git branch

* master

git branch -a

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/rebuild

git ls-remote。

3403cde92193332e5a86c0ee1001652217f14b2c    HEAD
3403cde92193332e5a86c0ee1001652217f14b2c    refs/heads/master
70dc401eb10191f9c025e8e1883c3e281b52e066    refs/remotes/origin/HEAD
70dc401eb10191f9c025e8e1883c3e281b52e066    refs/remotes/origin/master
4c8d40b286c00c876bfcbcc31cd92aa32bb970fc    refs/remotes/origin/rebuild
78df712072ede26debe1a86609e92950643b554c    refs/tags/DRUPAL-6-10
8278623b80f3abac676992a656a1022d387d9543    refs/tags/DRUPAL-6-11
3b20e4b64adc53ca7d1687a7583665d6119dc0c5    refs/tags/DRUPAL-6-12
ee1b8b37951baa8b9894d8158d0f8524c649560f    refs/tags/DRUPAL-6-13
79567390f4107a1d069c5b225a7949689adeb84e    refs/tags/DRUPAL-6-14
1ac143798b92b6e9bc575a9e1c2feb118d986656    refs/tags/DRUPAL-6-15
96f8ffef3262136d090f6499b964f1aeadedf110    refs/tags/DRUPAL-6-16
af49a2dcd48d95957c13ec2b396f588b9ad3700c    refs/tags/DRUPAL-6-17
ed5cf3d5aa9d3bc7897a62c348fd30fd3a540f6e    refs/tags/DRUPAL-6-18
d72672c1c5b42d2a1f5bac83348265ef4702230a    refs/tags/DRUPAL-6-19
9b14a5b49ef0f775fa95daaf9be1cdf83e48f6e7    refs/tags/DRUPAL-6-20
b0a7d1b19d68b31db17702222977cf86503782a1    refs/tags/DRUPAL-6-21
51b583583e31bdcfceb6f43863dc456982b87b6c    refs/tags/DRUPAL-6-22
38a68987f1f77e1ebe2898ae612af4c75a3276aa    refs/tags/DRUPAL-6-6
829692b020d5227270d946744f63e693eada22ad    refs/tags/DRUPAL-6-7
146c7426f68c5bf45365d72285eb2badfa1e26dc    refs/tags/DRUPAL-6-8
b8ef169cbfa6a94ad63e039811a1c4429eb7628b    refs/tags/DRUPAL-6-9
b3b0f04b541b18b47819c65b3e63a242e0819e2a    refs/tags/pressflow-6.22.105

现在在内部共享裸存储库上,如果我运行相同的命令,我会得到不同的东西:

git branch

* master
  rebuild

git branch -a

* master
  rebuild

git ls-remote。

70dc401eb10191f9c025e8e1883c3e281b52e066    HEAD
70dc401eb10191f9c025e8e1883c3e281b52e066    refs/heads/master
4c8d40b286c00c876bfcbcc31cd92aa32bb970fc    refs/heads/rebuild
78df712072ede26debe1a86609e92950643b554c    refs/tags/DRUPAL-6-10
8278623b80f3abac676992a656a1022d387d9543    refs/tags/DRUPAL-6-11
3b20e4b64adc53ca7d1687a7583665d6119dc0c5    refs/tags/DRUPAL-6-12
ee1b8b37951baa8b9894d8158d0f8524c649560f    refs/tags/DRUPAL-6-13
79567390f4107a1d069c5b225a7949689adeb84e    refs/tags/DRUPAL-6-14
1ac143798b92b6e9bc575a9e1c2feb118d986656    refs/tags/DRUPAL-6-15
96f8ffef3262136d090f6499b964f1aeadedf110    refs/tags/DRUPAL-6-16
af49a2dcd48d95957c13ec2b396f588b9ad3700c    refs/tags/DRUPAL-6-17
ed5cf3d5aa9d3bc7897a62c348fd30fd3a540f6e    refs/tags/DRUPAL-6-18
d72672c1c5b42d2a1f5bac83348265ef4702230a    refs/tags/DRUPAL-6-19
9b14a5b49ef0f775fa95daaf9be1cdf83e48f6e7    refs/tags/DRUPAL-6-20
b0a7d1b19d68b31db17702222977cf86503782a1    refs/tags/DRUPAL-6-21
51b583583e31bdcfceb6f43863dc456982b87b6c    refs/tags/DRUPAL-6-22
38a68987f1f77e1ebe2898ae612af4c75a3276aa    refs/tags/DRUPAL-6-6
829692b020d5227270d946744f63e693eada22ad    refs/tags/DRUPAL-6-7
146c7426f68c5bf45365d72285eb2badfa1e26dc    refs/tags/DRUPAL-6-8
b8ef169cbfa6a94ad63e039811a1c4429eb7628b    refs/tags/DRUPAL-6-9
b3b0f04b541b18b47819c65b3e63a242e0819e2a    refs/tags/pressflow-6.22.105

1 个答案:

答案 0 :(得分:3)

简介

简单地说,即使你看到的输出似乎不同,它实际上都告诉你同样的事情(虽然在不同程度的冗长)。

他们都说的是,裸仓库有2个分支:masterrebuild为了便于参考,我们将其称为远程仓库。开发商仓库有一个分支:master。我们称之为本地回购。此外,本地仓库正在跟踪远程仓库,远程仓库没有跟踪任何东西。

说明

git branch

本地

本地仓库的第一个git branch

它只是告诉您,您只有一个名为master的分支。星号符号*标记您当前所在的分支。 (在这种情况下,只能是一个master)。

如果使用-a标志运行相同的命令,则会显示本地和远程跟踪分支。您已经知道* master是什么了。

remotes/origin/HEAD是对远程仓库当前已检出分支中最后一次提交的引用。在这种情况下,在master分支上。这与本地仓库的*标记大致相同。

下一行remotes/origin/master告诉您名为master的遥控器上有一个名为origin的分支。这同样适用于rebuild分支的下一行。

现在,如果您要运行git remote -v,您将获得有关为您的回购配置哪些遥控器的更多信息。

远程

在远程仓库上(正如我们从本地分支中已经知道的那样),我们可以看到它有两个分支,目前位于master分支上。由于没有跟踪任何远程分支,添加-a并不会显示任何新内容。

git ls-remote

此命令列表在存储库中引用。暂时remote部分,这可以很容易地成为本地仓库(正如您已经通过使用.找到的那样)

分支,远程跟踪分支和标记都是引用(您可以在the git book中详细了解这些内容。)

本地

来自本地仓库的此命令的输出告诉您HEAD所在的提交以及与git branch -a给出的相同的信息,仅包括提交哈希值。 下面的所有内容都是对标签的引用。

远程

输出告诉您或多或少与您从本地仓库看到的内容相同,HEADmaster的修订版本相同,并且有一堆标记。只有一个rebuild分支和(因为没有遥控器),没有遥控器的入口。

在conslusion

我希望这有点清楚。 如果事情不清楚或者我错过了什么,请在评论中告诉我,我会更新我的答案以包含它。