Обсуждение:Краткое руководство по сборке с gear
Материал из ALT Linux Wiki
(Новая страница: «Насколько я знаю, при клонировании клонируется только одна ветка, поэтому git checkout <BRANCH> воо...») |
Real (обсуждение | вклад) (использование remotes) |
||
(1 промежуточная версия не показана) | |||
Строка 1: | Строка 1: | ||
Насколько я знаю, при клонировании клонируется только одна ветка, поэтому | Насколько я знаю, при клонировании клонируется только одна ветка, поэтому | ||
git checkout <BRANCH> вообще не сработает. | git checkout <BRANCH> вообще не сработает. | ||
+ | |||
+ | ---- | ||
+ | Клонируется ВСЁ, что есть в репозитории. Только основная ветка создаётся явно, остальные хранятся как remotes, на их основе можно уже создавать такую структуру, какая нужна. Поясню. На git.alt есть некий репозиторий, пусть это будет my.git, колнируем: | ||
+ | git clone git.alt:packages/my.git | ||
+ | Если у нас там было 2 бранча - master и upstream, после клонирования получится вот такой набор бранчей: | ||
+ | * master | ||
+ | * origin/HEAD | ||
+ | * origin/master | ||
+ | * origin/upstream | ||
+ | |||
+ | Чтобы получить бранч upstream, с которым уже можно работать локально, достаточно выполнить: | ||
+ | git checkout -b upstream origin/upstream | ||
+ | |||
+ | Примерно, вот так. | ||
+ | :[[Участник:Real|real]] 01:53, 17 июля 2009 (UTC) | ||
+ | |||
+ | ---- | ||
+ | Кстати, по поводу remotes - очень удобная штука. Без них нередко приходится выполнять ужасные конструкции типа git pull git.alt:/people/логин/packages/пакет.git для втягивания в свой git чужих изменений. А вот с remotes всё намного проще: | ||
+ | |||
+ | git remote add логин git.alt:/people/логин/packages/пакет.git | ||
+ | |||
+ | После этого достаточно периодически делать | ||
+ | git remote update | ||
+ | и все изменения в чужом репозитории зальются в наш репозиторий, будет набор бранчей, соответствующих имени добавленного remotes. | ||
+ | |||
+ | Для примера: | ||
+ | git remote add led git.alt:/people/led/packages/blcr.git | ||
+ | После выполнения команды git remote update получится примерно такой набор бранчей (если предположить, что в нашем репозитории бранча два - master и upstream): | ||
+ | * master | ||
+ | * upstream | ||
+ | * remotes/led/master | ||
+ | * remotes/led/releases | ||
+ | * remotes/origin/HEAD -> origin/master | ||
+ | * remotes/origin/master | ||
+ | * remotes/origin/upstream | ||
+ | Детали могут отличаться, но смысл будет тот же. | ||
+ | |||
+ | Периодически выполняя git remote update, все изменения (как в своём репозитории, так и в репозитории led@) будут залиты на машину, и втянуть обновления себе очень просто (например, обновим upstream): | ||
+ | git checkout upstream | ||
+ | git merge led/releases | ||
+ | |||
+ | :[[Участник:Real|real]] 23:28, 18 июля 2009 (UTC) |
Текущая версия на 23:28, 18 июля 2009
Насколько я знаю, при клонировании клонируется только одна ветка, поэтому git checkout <BRANCH> вообще не сработает.
Клонируется ВСЁ, что есть в репозитории. Только основная ветка создаётся явно, остальные хранятся как remotes, на их основе можно уже создавать такую структуру, какая нужна. Поясню. На git.alt есть некий репозиторий, пусть это будет my.git, колнируем:
git clone git.alt:packages/my.git
Если у нас там было 2 бранча - master и upstream, после клонирования получится вот такой набор бранчей:
* master * origin/HEAD * origin/master * origin/upstream
Чтобы получить бранч upstream, с которым уже можно работать локально, достаточно выполнить:
git checkout -b upstream origin/upstream
Примерно, вот так.
- real 01:53, 17 июля 2009 (UTC)
Кстати, по поводу remotes - очень удобная штука. Без них нередко приходится выполнять ужасные конструкции типа git pull git.alt:/people/логин/packages/пакет.git для втягивания в свой git чужих изменений. А вот с remotes всё намного проще:
git remote add логин git.alt:/people/логин/packages/пакет.git
После этого достаточно периодически делать
git remote update
и все изменения в чужом репозитории зальются в наш репозиторий, будет набор бранчей, соответствующих имени добавленного remotes.
Для примера:
git remote add led git.alt:/people/led/packages/blcr.git
После выполнения команды git remote update получится примерно такой набор бранчей (если предположить, что в нашем репозитории бранча два - master и upstream):
* master * upstream * remotes/led/master * remotes/led/releases * remotes/origin/HEAD -> origin/master * remotes/origin/master * remotes/origin/upstream
Детали могут отличаться, но смысл будет тот же.
Периодически выполняя git remote update, все изменения (как в своём репозитории, так и в репозитории led@) будут залиты на машину, и втянуть обновления себе очень просто (например, обновим upstream):
git checkout upstream git merge led/releases
- real 23:28, 18 июля 2009 (UTC)