Frage

Wenn Sie git branch -r laufen, warum die lodert macht es origin/HEAD Liste? Zum Beispiel gibt es auf GitHub eine Remote-Repo ist, sagt, mit zwei Zweigen: Master und awesome-Funktion. Wenn ich es packen Sie git clone und dann in mein neues Verzeichnis gehen und die Zweige Liste, sehe ich:

$ git branch -r
origin/HEAD
origin/master
origin/awesome-feature

oder was auch immer, um es in sein würde (alpha? Ich Fälsche dieses Beispiel die Identität eines unschuldigen Repo geheim zu halten). Also, was ist das HEAD Unternehmen? Ist es das, was die letzte Person musste push ihre HEAD zu spitz, wenn sie gedrückt? Wird das nicht immer sein, was auch immer es war, dass sie pushed? HEADs bewegen ... warum ich, was jemand HEAD an auf einer anderen Maschine darauf egal?

Ich bin immer nur einen Handgriff auf Remote-Tracking und so, so ist dies eine schleich Verwirrung. Dank!

EDIT: Ich war unter dem Eindruck, dass Remote-repos gewidmet (wie GitHub, wo niemand in ssh wird und an diesem Code arbeiten, aber nur ziehen oder schieben, usw.) nicht und soll nicht eine HEAD habe, weil es grundsätzlich keine Arbeitskopie. Nicht so?

War es hilfreich?

Lösung

@robinst ist richtig.

In git, können Sie wählen, welcher Zweig ist standardmäßig ausgecheckt (das heißt, wenn Sie klonen). In der Standardeinstellung origin/HEAD an diesem Punkt.

Auf GitHub, diese in den Admin-Einstellungen ändern kann Ihre GitHub Repo. Sie können auch über

von der Kommandozeile tun
git remote set-head origin trunk

oder löscht es insgesamt über

git remote set-head origin -d

Beispiel . Schauen Sie sich die Drop-down ‚Schalter Zweige‘. trunk wird geprüft, so origin/HEAD folgt trunk.

Andere Tipps

Der Grund, ein nackter Repository eine HEAD haben kann, ist, dass, weil es die Niederlassung bestimmt zunächst nach einem Klon des Repository ausgecheckt wird.

Normalerweise HEAD Punkte zu meistern, und das ist der Zweig, der ausgecheckt ist, wenn die Leute das Repository klonen. Setzen auf einem anderen Zweig (von HEAD im nackten Repository bearbeiten) Ergebnisse in diesem Zweig wird auf Klon ausgecheckt.

  

Ich habe den Eindruck, dass   gewidmet Fern repos (wie GitHub   wo niemand ssh in und arbeiten auf   dass Code, sondern nur ziehen oder schieben, usw.)   nicht und sollte nicht eine HEAD haben   weil es im Grunde keine   Arbeitskopie. Nicht so?

ich genau denselben Eindruck hatte, wie Sie gesagt haben.

Und ich kann sogar löschen nicht, dass die Herkunft / HEAD Fernverfolgung Zweig von Github geklont, indem Sie

git branch -d -r origin/HEAD

Das hatte keine Wirkung.

Kann mir jemand sagen, wie ich diesen Ursprung / HEAD löschen Fernverfolgung Zweig?

update

Obwohl ich nicht gefunden habe, warum es ein origin / HEAD erstellt, wenn Klon von github, ich einen Weg finden, es zu löschen.

Die neue Version von git bieten

git remote set-head <name> -d

die nutzlosen HEAD Zeiger von Fernverfolgung Zweig zu löschen.

Und wir können auch die stummen Standardnamen ‚Herkunft‘ ändern, was auch immer wir wollen, indem Sie

git remote rename origin <new_name>

Hope this helfen kann. :)

Du hast Recht, dass drücken, um gewidmet Fern repos arbeiten viel besser, wenn sie ‚nackten‘ sind, das heißt, wenn sie Arbeitsverzeichnisse nicht haben. Git Architektur wird für die Aktualisierung von Patches oder pull (fetch) entworfen, der Sinn in einer verteilten VCS macht. Da die Dokumente irgendwo sagen, zu einem Zweig drängen, die derzeit kann, wird ausgecheckt führen in „unerwarteten Ergebnissen“ .

Der Kopf ist Teil der Anforderungen für ein gültiges Repository. Git Repository-Layout sagt, teilweise:

HEAD

A symref (see glossary) to the refs/heads/ namespace describing the currently active  
branch. It does not mean much if the repository is not associated with any working tree  
(i.e. a bare repository), but a valid git repository must have the HEAD file; some  
porcelains may use it to guess the designated "default" branch of the repository  
(usually master). It is legal if the named branch name does not (yet) exist.

So wirst du HEAD als Teil der Zweigliste sehen, auch wenn „es nicht viel bedeutet ...“

Wenn "Ursprung" eine Remote-Repository ist, dann origin / HEAD identifiziert den Standardzweig auf dieser Remote-Repository.

Beispiel:

$ git remote show
origin
$ git remote show origin
* remote origin
  Fetch URL: git@github.com:walkerh/pipe-o-matic.git
  Push  URL: git@github.com:walkerh/pipe-o-matic.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

Beachten Sie die Zeile, die sagt: "HEAD Zweig: Master". Hier wird die Remote-Repository ermöglicht Kunden wissen, welcher Zweig standardmäßig zur Kasse.

Es gibt immer einen Kopf, der Punkte auf den aktuell ausgecheckt Zweig auf der Remote-Repo (die können oder auch Master nicht sein). Auch Remote-Repositories haben Stromzweige. Normalerweise ist es Meister, und aus der Spitze von meinem Kopf kann ich nicht aus irgendeinem Grund denken, warum man sich wünschen würde, es zu ändern, aber es kann verändert werden.

Meine Vermutung ist, dass jemand einen Zweig geschoben und nannte es HEAD:

git push origin HEAD
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top