2015-10-01 2 views
-1

Я хотел бы получить путь к файлу указанного удаленного ref.Как получить путь ref к указанной удаленной ветке в Git

Хотя в некоторых случаях имя файла очевидно, как в .git/refs/remotes/origin/master, это не очевидно, в других случаях как .git/refs/remotes/origin/HEAD где ГОЛОВЫ точки к мастеру.

Я пишу инструмент, который требует касания каждого удаленного файла, но он не работает во втором случае сверху.

Для того, чтобы решить эту проблему, я думал, что в этих двух возможностей:

1- Выполнить команду GIT вернуть имя файла исх конкретного удаленного филиала. Что эквивалентно:

$ git ---give-me-the-ref-of origin/master 
refs/remotes/origin/HEAD 

2- Выполнить команду Git, чтобы гарантировать, что отслеживали удаленный филиал имеет реф файл (несмотря на ГОЛОВУ). Что эквивалентно:

$ git checkout --track ---use-explicit-ref-besides-HEAD master 

Вы знаете, как достичь любой из 2-х вариантов выше?

+1

Я не понимаю, почему вы хотите, чтобы имя * файла * в '.git/refs', которое содержит идентификатор выше по течению от ветки, но есть большая потенциальная ошибка: не может быть * be * a отдельный файл, если ссылка была «упакована». Упакованная ссылка является одной из многих найденных в '.git/упакованных-refs'. Refs обычно упаковываются во время автоматического gc и разбиваются на отдельные файлы при последующих изменениях (затем переупаковываются позже более поздним gc). ('git gc' запускает' git pack-refs', которые также могут запускаться пользователями, поэтому есть больше способов получить это состояние.) – torek

+0

Мой подход был неправильным, потому что я был упрям ​​с использованием удаленных ссылок по имени. Вместо этого я использовал «git rev-parse origin/master», чтобы получить хэш, который работал на то, что я хотел сделать. – user1865815

ответ

0

Мой подход был неправ, потому что предполагал, что все рефы к пультам существовали как отдельные файлы, но, как упоминался torek подмножество рефов может быть перечислено в .git/упакованных-рефах, а также.

Вместо этого я использовал git rev-parse origin/master для получения удаленной ветви ветви, и вместо этого я использовал ее.

Смежные вопросы