Ändere einen Git Remote HEAD, um auf etwas neben Master zu zeigen
Wie kann ich ein Git-remote-HEAD Verweis auf etwas zeigen neben dem "master"?
Mein Projekt hat einen politischen, nicht um einen "master" - Zweig (alle äste sind aussagekräftige Namen haben). Darüber hinaus ist die kanonische master-repository der Zugriff ist nur via ssh://, ohne shell-Zugang (wie GitHub oder Unfuddle).
Mein problem ist, dass das remote-repository noch einen KOPF hat Verweis auf refs/heads/master, aber ich brauche es, um auf einen anderen Zweig. Dies führt zu zwei Problemen:
-
Beim clonen der repo, da diese,
Warnung: die remote-KOPF bezieht sich auf nonexistent ref, unable to checkout.
Das ist verwirrend und unbequem.
-
Web-basierte code-browser hängt auf dem KOPF als Grundlage für das surfen im Baum. Ich brauche KOPF auf einen gültigen Zweig, dann.
InformationsquelleAutor der Frage JasonSmith | 2009-09-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es wurde fast die gleiche Frage auch auf GitHub vor einem Jahr.
Die Idee war, benennen Sie den master-Zweig:
("
git-symbolic-ref HEAD refs/head/published
" würden, nicht weitergegeben werden, um die remote-repo)Dies ist ähnlich zu "Wie lösche ich ein origin/master Git".
Wie gesagt in dieser thread: (Hervorhebung von mir)
(das ist der ganze Punkt Ihrer Frage, ich weiß 😉 )
Vielleicht der einzige Weg wäre eine "Veröffentlichung für die Armen", wo Sie:
Aber das würde bedeuten, Schreibzugriff auf den server, was nicht immer möglich ist.
Wie erkläre ich in "Git: die Richtige Art und Weise zu ändern, der Aktive Zweig in einem bare-repository?",
git remote set-head
nicht ändern würde, alles, was auf dem remote-repo.Würde es nur ändern Sie die remote-tracking-branch gespeichert, die lokal in Ihrem lokalen repo, in
remotes/<name>/HEAD
.InformationsquelleAutor der Antwort VonC
Update: funktioniert Dies nur für die lokale Kopie des repository ("client"). Bitte siehe andere Kommentare unten.
Mit einer aktuellen version von git (Feb 2014), die korrekte Vorgehensweise wäre:
git remote set-head $REMOTE_NAME $BRANCH
Also beispielsweise der Wechsel der head auf remote -
origin
Zweigdevelop
wäre:git remote set-head origin develop
InformationsquelleAutor der Antwort jrhorn424
Da Sie erwähnen, GitHub, es zu tun auf Ihre Website gehen Sie einfach in Ihr Projekt, dann...
admin > Default Branch > (choose something)
Getan.
InformationsquelleAutor der Antwort srcspider
Finden Sie unter: http://www.kernel.org/pub/software/scm/git/docs/git-symbolic-ref.html
Dies setzt den default-Zweig im git-repository. Sie kann diese in bare oder gespiegelte repositories.
VERWENDUNG:
$ git symbolic-ref HEAD refs/heads/<Zweig-name>
InformationsquelleAutor der Antwort mani-fresh
(Gab es schon im Grunde die gleiche Frage "erstellen Sie ein git symbolic-ref in remote repository", die erhielt keine Universelle Antwort.)
Aber es gibt konkrete Antworten für die verschiedenen git "Farmen" (wobei mehrere Benutzer verwalten können git-repos durch eine eingeschränkte Schnittstelle: über http und ssh): http://Github.com, http://Gitorious.org, http://repo.or.cz, Girar (http://git.altlinux.org).
Diese spezifischen Antworten, die möglicherweise nützlich für diejenigen, die diese Seite Lesen und denken über diese spezifischen Dienstleistungen.
$ ssh git.alt help | fgrep branch
default-branch <path to git repository> [<branch>]
$
zum Beispiel
ssh git.alt default-branch packages/autosshd.git sisyphus
zu ändern, den KOPF in das remote-repoautosshd.git
auf diesisyphus
Zweig.InformationsquelleAutor der Antwort imz -- Ivan Zakharyaschev
Wenn Sie Zugriff auf das remote-repo aus einer shell, gehen Sie einfach in die .git (oder das Haupt dir, wenn Ihr ein bare-repo) und ändern Sie die KOPF-Datei, zeigen Sie auf den richtigen Kopf. Zum Beispiel, standardmäßig enthält Sie immer 'refs: refs/heads/master', aber wenn Sie brauchen, dass foo den KOPF statt, nur Bearbeiten Sie die KOPF-Datei und ändern Sie den Inhalt zu 'refs: refs/heads/foo'.
InformationsquelleAutor der Antwort squeegee
Können Sie erstellen ein freistehendes master Zweig mit nur Porzellan Git-Befehle:
Gibt uns eine master Zweig mit einer einfachen Meldung (möchten Sie vielleicht zu höflich). Nun erstellen wir unsere "real" - Filiale (nennen wir es Stamm in Ehren, SVN) und Scheidung aus master:
Hey, presto! gitk --all zeigen master und Stamm keine Verbindung zwischen Ihnen.
Die "Magie" hier ist, dass --amend Ursachen git commit erstellen Sie einen neuen commit mit den gleichen Eltern wie der aktuelle KOPF, dann den KOPF darauf. Aber der aktuelle Chef nicht haben einen Elternteil, wie es dem ersten commit in das repository, so dass der neue KOPF nicht bekommen entweder, so dass Sie losgelöst von einander.
Den alten HEAD commit nicht gelöscht git-gc weil refs/heads/master noch Punkte.
Den --allow-empty flag wird nur benötigt, weil wir Begehen einen leeren Baum. Wenn es einige git add's nach der git rm dann würde es nicht notwendig sein.
In Wahrheit, Sie können erstellen einen getrennten Zweig jederzeit durch Verzweigung der ersten commit in das repository löschen Ihren Baum, indem Sie Ihre freistehende Baum, dann tun git commit --amend.
Ich weiß, das beantwortet nicht die Frage, wie Sie die Standard-branch auf das remote-repository, aber es gibt eine saubere Antwort auf, wie zum erstellen einer getrennten Zweig.
InformationsquelleAutor der Antwort kbro
Erstellen Sie zunächst die neue Niederlassung, die Sie gerne als Standard, zum Beispiel:
$>git branch main
Anschließend drücken Sie diesen Zweig der Herkunft:
$>git push origin main
Nun, wenn Sie sich einloggen Ihrem GitHub-account, den Sie gehen können, um Ihr repository und wählen Sie Einstellungen>Default-Zweig, und wählen Sie "main."
Dann, wenn Sie so wählen, können Sie löschen Sie den master-Zweig:
$>git push origin :master
InformationsquelleAutor der Antwort 4mnes7y
Für gitolite Menschen, gitolite unterstützt einen Befehl namens -- wait for it --
symbolic-ref
. Es ermöglicht Ihnen, führen Sie diesen Befehl aus der Ferne, wenn Sie W (write) - Berechtigung für das repo.InformationsquelleAutor der Antwort sitaram
Einfach melden Sie sich einfach in Ihrem GitHub-account und auf der rechten Seite in der navigation wählen Sie im Menü Einstellungen, in der Registerkarte "Einstellungen" wählen Sie Default-Zweig und kehren Sie zurück zur Hauptseite des Repositorys, die hat den trick für mich.
InformationsquelleAutor der Antwort Matija