fatale: nome dell'oggetto non valido: "master"


182

Ho un server privato che esegue git 1.7 Quando

git init 

una cartella che non crea un ramo principale. Perché quando lo faccio:

git branch 

non elenca nulla. Quando io faccio:

git --bare init

crea i file. Quando scrivo

git branch master 

dice:

fatal: Not a valid object name: 'master'.

Lo stesso risultato quando si tenta di generare una nuova filiale:git branch newbranch
Sören,

Risposte:


281

Quando ho git inituna cartella non crea un ramo principale

Questo è vero e comportamento previsto. Git non creerà un masterramo finché non commetti qualcosa.

Quando lo faccio git --bare initcrea i file.

Un non nudo git initcreerà anche gli stessi file, in una .gitdirectory nascosta nella radice del progetto.

Quando scrivo git branch masterdice "fatale: non un nome oggetto valido: 'master'"

Questo è di nuovo un comportamento corretto. Fino a quando non esegui il commit, non esiste un ramo master .

Non hai fatto una domanda, ma risponderò alla domanda che pensavo volessi porre. Aggiungi uno o più file alla tua directory e git addloro per preparare un commit. Quindi git commitper creare il commit e il masterramo iniziali .


3
Quindi, se non avessi mai voluto un puntatore di ramo chiamato "master"? E se volessi che si chiamasse "principale"? Non c'è modo di iniziare con un nome diverso per il primo puntatore di filiale? Nessun parametro "git init"? Potrei forse cambiare il nome elencato in .git / HEAD? Ci sono anche altri file che dovrei modificare?
Jemenake,

1
@Jemenake Quindi avvia il tuo repository, effettua un commit e rinomina il ramo. Se vuoi davvero evitare che un ramo "master" venga mai creato, modifica .git/HEADe modifica refs/heads/masterin refs/heads/main, ma non c'è alcun motivo per farlo. Rinomina il tuo ramo dopo il primo commit.
meagar

13
puoi usare git checkout -b <branchname>per cambiare HEAD - non è necessario modificare il file.
Superfly Jon,

1
L'ultima parte è stata d'oro, TFS GIT viene fornito con repository git totalmente non inizializzato. Quindi dopo il primo clone usando SourceTree, nulla funziona, non è riuscito a capirlo per molto tempo fino a quando "Quindi git commit per creare il tuo commit iniziale e il ramo principale". Non c'è davvero modo di avere master-local / remote senza commit / push iniziale?
Pawel Cioch,

L'ultima spiegazione mi aiuta a capire che il ramo non può esistere se non ci sono commit.
Mayur Patil,

23

Git crea un ramo master dopo aver eseguito il primo commit. Non c'è nulla per cui avere un ramo se non c'è codice nel repository.


1
Ma hai bisogno di un nuovo ramo per spingere nel maestro.
Sören,

1
ecco una domanda su "Git crea una diramazione principale dopo aver eseguito il primo commit". Allora perché lo "stato git" mostra "On Branch Master" prima di tutto questo?
Tick20

16

Prima di tutto, quando crei un "repository nudo", non eseguirai alcun lavoro con esso (non contiene una copia funzionante, quindi il git branchcomando non è utile).

Ora, il motivo per cui non avresti un masterramo anche dopo aver fatto un git initè che non ci sono commit: quando crei il tuo primo commit, avrai un masterramo.


1
Va bene, è chiaro. Ma quando lo commetto dice: fatale: vuoto ident
Roy van Zanten,

L'ho risolto a. Ma quando voglio estrarre / recuperare questo repository da un altro computer. Dovrei fare git init lì per?
Roy van Zanten,

@RoyvanZanten È possibile utilizzare git cloneper salvare dover fare un git initlato ricevitore.
Borealid,

Sono riuscito a far funzionare tutto. Nessun errore Ma quando provo a spingerlo dice: Scrivere oggetti <bla> bla> Totale <3/3> Nel SERVER 59fa0tweirdcod04 master> master Ma quando controllo i file sul server non c'è nulla.
Roy van Zanten,

@RoyvanZanten Stai guardando il repository del server o la copia di lavoro del server ? Devi fare una cosa git checkoutse vuoi che il WC rifletta ciò che è nella .gitdirectory (che è dove hai spinto).
Borealid,

12

È necessario impegnarsi almeno una volta sul master prima di creare un nuovo ramo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.