On Mon, Apr 09, 2007 at 11:39:56AM +0400, Eugene Prokopiev wrote: > Перед отправкой: > > $ git-branch > dbmail_2_2 > * srpms > > $ git-show-ref > 30f7175ef6fc270c42024820455e59c9b5866c1c refs/heads/dbmail_2_2 > 350fb9d63f4e90636eca217bb1c8f75922009319 refs/heads/srpms > 5c6384de1eee3de9e74be9f2d6f4df214b7a0c78 refs/tags/2.2.4-alt1 > f670fe9e78fc328349ed5f6d118930eee6394410 refs/tags/dbmail/2.2.4.200704090940 > > Оправка: > > git-push --repo=all git.alt:packages/dbmail.git > > Затем делаю git-clone git.alt:packages/dbmail, перехожу в каталог dbmail > и в нем вижу: > > $ git-branch > > $ git-show-ref > 30f7175ef6fc270c42024820455e59c9b5866c1c refs/remotes/origin/dbmail_2_2 > 350fb9d63f4e90636eca217bb1c8f75922009319 refs/remotes/origin/srpms > 5c6384de1eee3de9e74be9f2d6f4df214b7a0c78 refs/tags/2.2.4-alt1 > f670fe9e78fc328349ed5f6d118930eee6394410 refs/tags/dbmail/2.2.4.200704090940 > > Куда делись мои бранчи? По умолчанию git-clone помещает все бранчи (refs/heads/*) исходного репозитория в refs/remotes/origin/* в локальном репозитории. Имя origin можно сменить опцией --origin=. Обычный бранч после git-clone создаётся только один - это тот бранч, на который в исходном репозитории указывала ссылка HEAD. В данном случае HEAD указывает в refs/heads/master (способа изменить ссылку через git-push вроде бы не существует), при этом бранча master нет, поэтому git-clone не создаёт ни одного бранча. После выполнения git-clone можно создать нужные бранчи для работы: git branch dbmail_2_2 origin/dbmail_2_2 или с одновременным выполнением checkout: git checkout -b dbmail_2_2 origin/dbmail_2_2 Можно ещё добавить опцию --track, или сконфигурировать репозиторий таким образом, чтобы --track использовалось по умолчанию: git config branch.autosetupmerge true Тогда при выполнении git-pull, когда бранч, созданный с опцией --track, является текущим, в этот бранч будут смержены изменения из того репозитория и бранча, который был указан вторым параметром git-branch. > Другой вопрос: что нужно написать в Push: в .git/remotes/origin (сейчас > он не используется), чтобы отправлять все содержимое репозитария? По умолчанию git-push отправляет все бранчи, присутствующие как в локальном, так и в удалённом репозитории, поэтому дополнительные действия требуются только при необходимости выложить новый бранч, которого ещё нет на другом конце. Можно использовать git push --all, но указать эту опцию в конфигурации нельзя (кроме того, в этом случае будут отправлены и ссылки из refs/remotes/, что обычно нежелательно).