Сравнение 'git branch' и 'git ls-remote' для клонов с открытым репо публичного репо и клонов с непонятным репо голого - PullRequest
0 голосов
/ 24 ноября 2011

Я клонировал общедоступный репозиторий (в данном случае, Pressflow / Drupal) в пустой репозиторий на нашем внутреннем общем репо, а затем клонировал его в не пустой репозиторий, который будет использоваться на компьютере разработчика. Я новичок в git и пытаюсь лучше разобраться в этом, поэтому я запустил несколько команд, таких как 'git branch' и 'git ls-remote', в обоих репозиториях, чтобы увидеть, что происходит, и следующий вывод. Я был бы признателен, если бы кто-то, кто знает это, мог бы объяснить мне, почему выходные данные этих команд в одном репозитории отличаются от выходных данных в другом репозитории. Во-первых, вот что видно из репозитория non-bare (содержит рабочую копию) разработчика:

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 Ответ

3 голосов
/ 03 октября 2012

Введение

Проще говоря, несмотря на то, что вывод, который вы видите , кажется, отличается, на самом деле все это говорит вам об одном и том же (хотя и на разных уровнях многословия).

Все, что они говорят, состоит в том, что в голом репо есть 2 ветви: master и rebuild. Для удобства назовем это репо remote . Репо разработчика имеет одну ветку: 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, это также может быть локальное репо (как вы уже поняли, используя .)

Ветви, ветки удаленного отслеживания и теги являются ссылками (подробнее об этом можно прочитать в git book ).

местные

Вывод этой команды из вашего локального репозитория сообщает вам, в каком коммите находится HEAD, и ту же информацию, что и git branch -a, только хэши коммитов. Все, что ниже, это ссылки на теги.

дистанционный

Вывод говорит вам более или менее так же, как то, что вы видите из локального репо, HEAD - это та же ревизия, что и master, и есть множество тегов. Только есть также ветка rebuild и (так как нет пультов), там нет записи для пультов.

В заключение

Надеюсь, это немного прояснит ситуацию. Если что-то неясно или я что-то пропустил, сообщите мне в комментариях, и я обновлю свой ответ, чтобы включить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...