Ho un repository spoglio utilizzato come archivio centrale per il mio progetto. Tutti gli sviluppatori fanno git clone <repo>
da condividere con esso. Quando fanno il clone, ottengono un checkout del ramo principale (a meno che non lo facciano git clone -n
) perché repo.git/HEAD
contiene ref: refs/heads/master
, rendendo questo il ramo attivo .Git: modo corretto per cambiare ramo attivo in un repository nudo?
La domanda è: come modificare correttamente il ramo attivo ? Potrei semplicemente hackerare direttamente il file repo.git/HEAD
, ma sembra brutto e, beh, hacky.
Ho provato a fare git checkout <otherbranch>
nella directory repo .git
, ma non è riuscito perché non ero in un albero di lavoro.
ho provato git update-ref HEAD refs/heads/otherbranch
ma che ha appena aggiornato refs/teste/master di essere lo stesso di refs/teste/otherbranch (ok, ho fatto uno in un repository fittizio, non la mia una produzione!)
ho provato git update-ref --no-deref HEAD refs/heads/otherbranch
e quasi ha funzionato. Ha aggiornato il file HEAD
, ma lo ha impostato sullo SHA1 del commit indicato da refs/heads/otherbranch
.
Sto testando con git versione 1.7.0.2.msysgit.0
.
Sto indovinando non c'è modo di farlo attraverso git push
, a permettere tutti quanti di cambiare il vostro ramo di default sembra un po 'pericoloso (!), Ma sicuramente c'è un modo migliore per farlo nel repository .git
directory di direttamente l'hacking del file HEAD
.
IMO stai semplicemente cercando di fare The Wrong Thing qui. Se vuoi che il ramo predefinito sia qualcosa di diverso da master, allora quel ramo deve essere il master. In alternativa, utilizzare due diversi repository. –
In che modo questo fondamentalmente sta cercando di fare la cosa sbagliata qui? Un repository nudo supporta più rami. Io uso un repository nudo come back-up nel mio repository locale, e come tale rispecchiano i rami. Ho un master su entrambi e un ramo di sviluppo su entrambi. Se voglio vedere il log del ramo di sviluppo sul repository nudo, devo hackerare i file - sembra che git sia fondamentalmente sbagliato qui riguardo al supporto del repository nudo. – Cthutu
@NicholasKnight IMHO sei fondamentalmente sbagliato qui. Non c'è niente di speciale in "master" come nome di un ramo, è solo un default. Nei repository che mantengono non abbiamo un ramo master, in quanto "master" non è significativo per l'azienda. Ogni volta che facciamo un rilascio, creiamo un nuovo ramo di manutenzione con il nuovo numero di versione e lo assegniamo come ramo attivo. – Spacemoose