Я использую универсальные списки почти для всех сценариев. Единственное время, когда я рассматривал бы использование полученного набора больше, - то, если я добавляю набор определенные участники. Однако появление LINQ уменьшило потребность в даже этом.
Год назад был почти такой же вопрос на GitHub .
Идея заключалась в том, чтобы переименовать ветку master:
git branch -m master development
git branch -m published master
git push -f origin master
Сделать так, чтобы у мастера было то, что вы хотите. использовать, а всю остальную работу делать в филиалах.
(« git-symbolic-ref HEAD refs / head / published
» не будет распространяться на удаленное репо)
Это похоже на « Как удалить origin / master в Git ".
Как сказано в , этот поток : (выделено мной)
«
git clone
»создает только одну локальную ветвь.
Для этого он смотрит наHEAD ref
удаленного репо и создает локальную ветвь с тем же именем, что и удаленная ветка, на которую он ссылается.Итак, чтобы завершить это, у вас есть репо. A и клонируйте его:
HEAD
ссылкиrefs / Heads / master
и существующие
-> вы получаете локальную ветвь с именем master, начиная с origin / masterHEAD ссылки
refs / heads / anotherBranch
и существующую
-> вы получаете локальную ветку с именемanotherBranch
, начиная сorigin / anotherBranch
HEAD ссылки
refs / Heads / master
, а ее не существует
-> "git clone" жалуетсяНе уверен, есть ли способ напрямую изменить
HEAD
ref в репозитории .
(это и есть суть вашего вопроса, я знаю ;))
Возможно единственным способом была бы «публикация для бедных» , где вы:
$ git-symbolic-ref HEAD refs/head/published
$ git-update-server-info
$ rsync -az .git/* server:/local_path_to/git/myRepo.git/
Но это потребует доступа на запись к серверу, что не всегда возможно .
Как я объясняю в статье « Git: правильный способ изменить активную ветвь в пустом репозитории? », git remote set-head
ничего не изменит в удаленном репозитории. .
Это изменит только ветвь удаленного отслеживания, хранящуюся локально в вашем локальном репо, в remotes /
(Уже был практически такой же вопрос "create git symbolic ref in remote repository", который не получил универсального ответа.)
Но есть конкретные ответы для различных git "ферм" (где несколько пользователей могут управлять git repos через ограниченный интерфейс: через http и ssh): http://Github.com, http://Gitorious.org, http://repo.or.cz, Girar (http://git.altlinux.org).
Эти конкретные ответы могут быть полезны для тех, кто читает эту страницу и думает об этих конкретных услугах.
$ ssh git.alt help | fgrep branch
default-branch <путь к git-репозиторию> []
$
например ssh git.alt default-branch packages/autosshd.git sisyphus
для изменения HEAD в удаленном репозитории autosshd.git
для указания на ветку sisyphus
. Вы можете создать отделенную ветку master, используя только фарфоровые команды Git:
git init
touch GO_AWAY
git add GO_AWAY
git commit -m "GO AWAY - this branch is detached from reality"
Это дает нам ветку master с грубым сообщением (вы можете захотеть быть более вежливыми). Теперь создадим нашу "настоящую" ветку (назовем ее trunk в честь SVN) и разведем ее с master:
git checkout -b trunk
git rm GO_AWAY
git commit --amend --allow-empty -m "initial commit on detached trunk"
Эй, престо! gitk --all покажет master и trunk без связи между ними.
"Магия" здесь в том, что --amend заставляет git commit создать новый коммит с тем же родителем, что и текущий HEAD, а затем заставить HEAD указывать на него. Но у текущего HEAD нет родителя, так как это начальный коммит в хранилище, поэтому у нового HEAD тоже нет родителя, что делает их отделенными друг от друга.
Старый коммит HEAD не удаляется git-gc, потому что refs/heads/master всё ещё указывает на него.
Флаг --allow-empty нужен только потому, что мы фиксируем пустое дерево. Если бы было несколько git add после git rm, то он был бы не нужен.
На самом деле, вы можете создать отделенную ветвь в любое время, отделив начальный коммит в хранилище, удалив его дерево, добавив свое отделенное дерево, а затем выполнив git commit --amend.
Я знаю, что это не отвечает на вопрос, как изменить ветку по умолчанию в удалённом репозитории, но это даёт чистый ответ на вопрос, как создать отделенную ветку.