Искам да проверя дали клон на отдалечено хранилище за Git съдържа слян клон с конкретно име. Например:
- Има отдалечено хранилище в
www.example.com:/repo.git
. - В това хранилище има клон, наречен
myBranch
. - Искам да проверя дали даден клон от подобен тип
myFeatureBranch
е обединенаmyBranch
.
Ако клонирах хранилището и касата myBranch
, Мога да направя git show-ref --verify refs/heads/myFeatureBranch
, но това не е това, което искам да направя. Трябва да го направя с отдалечен клон без клониране.
Вече играх наоколо git ls-remote --heads www.example.com:/repo.git
, но единственото, което получавам, е списък с отдалечени глави. Някой го е направил преди?
Отговори:
1 за отговор № 1Git работи локално по дизайн
Разпределената природа на Гит е основно проектирана около няколко основни понятия:
- Повечето операции са местни, с няколко малки изключения тласък и LS-отдалечени.
- Историята е изчислява от ангажиране на обекти.
Това означава, че изследването на историята е локална операция и не може да се извършва на отдалечено хранилище.
Отдалечени референции
Най- Git-LS-отдалечен командата е полезна при търсене нагоре за референции, но не за история. Например:
git ls-remote origin | egrep "some_branch_name|merge"
ще отпечата отзивите на отдалеченото устройство, съответстващо на името на клона, който търсите, или (в случая на GitHub) аргументите, създадени от обединени заявки за изтегляне като:
381a77fd72ea594cfce5c82c845ad3d10bb87d71 refs/pull/99/merge
Най- Git-LS-отдалечен командата показва refs налични в отдалечено устройствохранилище заедно с идентификационните номера на свързаните комисии. Ако обаче искате да разберете кой клон съдържа даден ангажимент, трябва да имате достъп до пълната история; което изисква да имате местно копие.
Намиране на клонове, съдържащи ангажимент за обединяване
Най-добрият начин, по който знам да се занимавам с този проблем, е следният:
- Изтеглете всички клони с
git fetch --all origin
. - Намерете ангажиментите за сливане, които искате
git log --merges
. - Намерете съдържащите се клонове с
git branch --all --contains <commit>
.
Това ще ви даде списък с клонове, които съдържат посочения ангажимент.
1 за отговор № 2
Не можете да изпълнявате команди на устройството за дистанционно управление.Това е просто механизъм за синхронизиране.Ще трябва да клонирате, за да изпълнявате редовните команди.
Може да искате да погледнете нагоре git branch -a --contains