fatal: Kein gültiger Objektname: 'master'

182

Ich habe einen privaten Server, auf dem git 1.7 ausgeführt wird

git init 

In einem Ordner wird kein Hauptzweig erstellt. Ursache, wenn ich tue:

git branch 

es listet nichts auf. Wenn ich es tue:

git --bare init

es erstellt die Dateien. Wenn ich tippe

git branch master 

es sagt:

fatal: Not a valid object name: 'master'.
Roy van Zanten
quelle
Das gleiche Ergebnis beim Versuch, einen neuen Zweig zu generieren:git branch newbranch
Sören

Antworten:

279

Wenn ich git initeinen Ordner habe, wird kein Hauptzweig erstellt

Dies ist wahr und erwartetes Verhalten. Git erstellt erst dann einen masterZweig, wenn Sie etwas festschreiben.

Wenn ich das mache git --bare init, werden die Dateien erstellt.

Ein Nicht-Bare-Benutzer git initerstellt dieselben Dateien auch in einem versteckten .gitVerzeichnis im Stammverzeichnis Ihres Projekts.

Wenn ich tippe git branch master, heißt es "fatal: Kein gültiger Objektname: 'master'"

Das ist wieder richtiges Verhalten. Bis zum Festschreiben gibt es keinen Hauptzweig.

Sie haben keine Frage gestellt, aber ich werde die Frage beantworten, von der ich angenommen habe, dass Sie sie stellen möchten. Fügen Sie Ihrem Verzeichnis eine oder mehrere Dateien hinzu git add, um ein Commit vorzubereiten. Dann git commiterstellen Sie Ihr erstes Commit und Ihren masterZweig.

meagar
quelle
3
Was wäre, wenn ich niemals einen Verzweigungszeiger namens "master" wollte? Was wäre, wenn ich wollte, dass es "main" heißt? Es gibt keine Möglichkeit, mit einem anderen Namen für den ersten Verzweigungszeiger zu beginnen? Keine "git init" Parameter? Könnte ich vielleicht den in .git / HEAD aufgeführten Namen ändern? Gibt es noch andere Dateien, die ich ändern müsste?
Jemenake
1
@Jemenake Initiieren Sie dann Ihr Repository, machen Sie ein Commit und benennen Sie den Zweig um. Wenn Sie wirklich einen „Master“ Zweig jemals geschaffen werden, zu bearbeiten vermeiden wollen .git/HEAD, und ändern refs/heads/masterzu refs/heads/main, aber es keinen Grund , überhaupt zu tun. Benennen Sie Ihren Zweig einfach nach dem ersten Commit um.
Meagar
13
Sie können git checkout -b <branchname>HEAD ändern - Sie müssen die Datei nicht bearbeiten.
Superfly Jon
1
Der letzte Teil war golden, TFS GIT kommt mit völlig uninitialisiertem Git Repo. Nach dem ersten Klonen mit SourceTree funktioniert also nichts, konnte es lange Zeit nicht herausfinden, bis "Dann git commit, um Ihren ersten Commit- und Master-Zweig zu erstellen". Gibt es wirklich keine Möglichkeit, Master-Local / Remote ohne anfängliches Commit / Push zu haben?
Pawel Cioch
Die letzte Erklärung hilft mir zu verstehen, dass der Zweig nicht existieren kann, wenn keine Commits vorhanden sind.
Mayur Patil
23

Git erstellt einen Master-Zweig, sobald Sie Ihr erstes Commit durchgeführt haben. Es gibt nichts, wofür eine Verzweigung vorhanden wäre, wenn sich kein Code im Repository befindet.

user489998
quelle
1
Sie benötigen jedoch einen neuen Zweig, um in den Master zu gelangen.
Sören
1
Hier ist eine Frage zu "Git erstellt einen Master-Zweig, sobald Sie Ihr erstes Commit durchgeführt haben." Warum zeigt der 'Git-Status' dann vor all diesen 'On Branch Master' an?
Tick20
16

Wenn Sie ein "nacktes Repository" erstellen, werden Sie zunächst keine Arbeit damit ausführen (es enthält keine Arbeitskopie, daher ist der git branchBefehl nicht nützlich).

Der Grund, warum Sie masterauch nach dem Ausführen eines Zweigs keinen Zweig haben würden, git initist, dass es keine Commits gibt: Wenn Sie Ihren ersten Commit erstellen, haben Sie dann einen masterZweig.

Borealid
quelle
1
Okay das ist klar. Aber wenn ich mich verpflichte, heißt es: tödlich: leere Identität
Roy van Zanten
Ich habe das behoben. Aber wenn ich dieses Repo von einem anderen Computer ziehen / holen möchte. Soll ich dort git init machen?
Roy van Zanten
@RoyvanZanten Sie können git clonedamit sparen, dass Sie eine git initauf der Empfängerseite ausführen müssen .
Borealid
Ich habe es geschafft, alles zum Laufen zu bringen. Keine Fehler. Aber wenn ich versuche zu pushen, heißt es: Schreiben von Objekten <bla> bla> Total <3/3> To SERVER 59fa0tweirdcod04 master> master Aber wenn ich die Dateien auf dem Server überprüfe, ist nichts da.
Roy van Zanten
@RoyvanZanten Sehen Sie sich das Server- Repository oder die Server- Arbeitskopie an ? Sie müssen eine git checkoutAktion ausführen, wenn das WC den Inhalt des .gitVerzeichnisses widerspiegeln soll (in das Sie verschoben haben).
Borealid
12

Sie müssen mindestens einmal einen Commit für den Master durchführen, bevor Sie einen neuen Zweig erstellen.

Fundhor
quelle