Я хотел бы получить путь к файлу указанного удаленного 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-х вариантов выше?
Я не понимаю, почему вы хотите, чтобы имя * файла * в '.git/refs', которое содержит идентификатор выше по течению от ветки, но есть большая потенциальная ошибка: не может быть * be * a отдельный файл, если ссылка была «упакована». Упакованная ссылка является одной из многих найденных в '.git/упакованных-refs'. Refs обычно упаковываются во время автоматического gc и разбиваются на отдельные файлы при последующих изменениях (затем переупаковываются позже более поздним gc). ('git gc' запускает' git pack-refs', которые также могут запускаться пользователями, поэтому есть больше способов получить это состояние.) – torek
Мой подход был неправильным, потому что я был упрям с использованием удаленных ссылок по имени. Вместо этого я использовал «git rev-parse origin/master», чтобы получить хэш, который работал на то, что я хотел сделать. – user1865815