Обсуждение:Краткое руководство по сборке с gear

Материал из ALT Linux Wiki

Насколько я знаю, при клонировании клонируется только одна ветка, поэтому 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)