fatal: Niepoprawna nazwa obiektu: „master”

182

Mam prywatny serwer z uruchomionym programem git 1.7

git init 

folder nie tworzy gałęzi master. Bo kiedy to zrobię:

git branch 

nic nie wymienia. Kiedy robię:

git --bare init

tworzy pliki. Kiedy piszę

git branch master 

to mówi:

fatal: Not a valid object name: 'master'.
Roy van Zanten
źródło
Ten sam wynik przy próbie wygenerowania nowego oddziału:git branch newbranch
Sören,

Odpowiedzi:

280

Kiedy jestem git initfolderem, nie tworzy gałęzi master

To prawda i oczekiwane zachowanie. Git nie utworzy mastergałęzi, dopóki czegoś nie zatwierdzisz.

Kiedy to robię git --bare init, tworzy pliki.

Non-go git initutworzy również te same pliki, w ukrytym .gitkatalogu w katalogu głównym twojego projektu.

Kiedy piszę git branch master, mówi „fatal: Niepoprawna nazwa obiektu:„ master ””

To znowu prawidłowe zachowanie. Dopóki nie zatwierdzisz, nie ma gałęzi master .

Nie zadałeś pytania, ale odpowiem na pytanie, które, jak zakładam, chciałeś zadać. Dodaj jeden lub więcej plików do katalogu i git addprzygotuj zatwierdzenie. Następnie, git commitaby utworzyć początkowe zatwierdzenie i mastergałąź.

Meagar
źródło
3
Co jeśli nigdy nie chciałem mieć wskaźnika gałęzi o nazwie „master”? Co jeśli chciałbym, aby nazywał się „głównym”? Nie ma sposobu, aby zacząć od innej nazwy dla pierwszego wskaźnika gałęzi? Brak parametrów „git init”? Czy mogę zmienić nazwę wymienioną w .git / HEAD? Czy są też jakieś inne pliki, które musiałbym zmienić?
Jemenake
1
@Jemenake Następnie zainicjuj swoje repozytorium, dokonaj zatwierdzenia i zmień nazwę oddziału. Jeśli naprawdę chcesz, aby uniknąć „master” oddział kiedykolwiek tworzony, edycję .git/HEADi zmianę refs/heads/masterdo refs/heads/main, ale nie bez powodu , aby to zrobić. Po prostu zmień nazwę swojego oddziału po pierwszym zatwierdzeniu.
meagar
13
możesz użyć git checkout -b <branchname>do zmiany HEAD - nie musisz edytować pliku.
Superfly Jon
1
Ostatnia część była złota, TFS GIT ma całkowicie niezainicjowane repozytorium git. Więc po pierwszym sklonowaniu za pomocą SourceTree nic nie działa, nie mogłem tego rozgryźć przez długi czas, dopóki „Git commit nie utworzy początkowej zmiany i gałęzi master”. Czy naprawdę nie ma sposobu na master-local / remote bez początkowego zatwierdzenia / wypchnięcia?
Paweł Cioch
Ostatnie wyjaśnienie pomaga mi zrozumieć, że gałąź nie może istnieć, jeśli nie ma żadnych zatwierdzeń.
Mayur Patil
23

Git tworzy gałąź główną po zakończeniu pierwszego zatwierdzenia. Nie ma po co odgałęzienia, jeśli w repozytorium nie ma kodu.

użytkownik489998
źródło
1
Ale potrzebujesz nowego oddziału, aby przejść do mistrza.
Sören,
1
oto pytanie dotyczące „Git tworzy gałąź główną po dokonaniu pierwszego zatwierdzenia”. Dlaczego więc „status git” pokazuje „On Branch Master” przed nimi wszystkimi?
Tick20
16

Po pierwsze, kiedy tworzysz „puste repozytorium”, nie będziesz z nim pracował (nie zawiera kopii roboczej, więc git branchpolecenie nie jest przydatne).

Otóż ​​powodem, dla którego nie miałbyś mastergałęzi nawet po zrobieniu git init, jest brak zatwierdzeń: po utworzeniu pierwszego zatwierdzenia będziesz miał mastergałąź.

Borealid
źródło
1
Okej, to jasne. Ale kiedy popełniam, mówi: fatalne: pusty ident
Roy van Zanten
Naprawiłem to. Ale kiedy chcę pobrać / pobrać to repozytorium z innego komputera. Czy powinienem tam git init?
Roy van Zanten,
@RoyvanZanten Możesz użyć, git cloneaby zaoszczędzić konieczności robienia git initpo stronie odbiornika.
Borealid
Udało mi się to wszystko uruchomić. Bez błędów. Ale kiedy próbuję wcisnąć, mówi: Zapisywanie obiektów <bla> bla> Razem <3/3> Do SERWERA 59fa0tweirdcod04 master> master Ale kiedy sprawdzam pliki na serwerze, nic tam nie ma.
Roy van Zanten
@RoyvanZanten Czy szukasz repozytorium serwera lub kopii roboczej serwera ? Musisz zrobić a, git checkoutjeśli chcesz, aby WC odzwierciedlało zawartość .gitkatalogu (w którym pchnąłeś).
Borealid
12

Przed utworzeniem nowego oddziału musisz zatwierdzić przynajmniej jeden raz na master.

Fundhor
źródło