Измените Мерзавца удаленная ГОЛОВА для указания на что-то помимо ведущего устройства

Я использую универсальные списки почти для всех сценариев. Единственное время, когда я рассматривал бы использование полученного набора больше, - то, если я добавляю набор определенные участники. Однако появление LINQ уменьшило потребность в даже этом.

120
задан random 3 February 2014 в 00:57
поделиться

3 ответа

Год назад был почти такой же вопрос на 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 / master

  • HEAD ссылки 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 / /HEAD[1145475 sizes.

62
ответ дан 24 November 2019 в 01:41
поделиться

(Уже был практически такой же вопрос "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).

Эти конкретные ответы могут быть полезны для тех, кто читает эту страницу и думает об этих конкретных услугах.

10
ответ дан 24 November 2019 в 01:41
поделиться

Вы можете создать отделенную ветку 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.

Я знаю, что это не отвечает на вопрос, как изменить ветку по умолчанию в удалённом репозитории, но это даёт чистый ответ на вопрос, как создать отделенную ветку.

5
ответ дан 24 November 2019 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: