fatal: Geçerli bir nesne adı değil: 'master'


182

Git 1.7 çalıştıran özel bir sunucum var

git init 

ana dal oluşturmadığı bir klasör. Çünkü ne zaman yaparım:

git branch 

hiçbir şey listelemiyor. Ben yaparken:

git --bare init

dosyaları oluşturur. Yazdığımda

git branch master 

diyor ki:

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

Yeni bir şube oluşturmaya çalışırken aynı sonuç:git branch newbranch
Sören

Yanıtlar:


281

Bir git initklasör olduğumda bir ana dal oluşturmuyor

Bu doğru ve beklenen davranıştır. masterSiz bir şey taahhüt edene kadar Git bir şube oluşturmaz .

Bunu yaptığımda git --bare initdosyaları oluşturur.

Çıplak olmayan git initda aynı dosyaları, .gitprojenizin kökündeki gizli bir dizinde oluşturur.

Ben yazarken git branch mastero "ölümcül: Geçerli bir nesne adını: üstad" diyor

Bu yine doğru davranış. Taahhüt yapana kadar bir ana dal yoktur .

Bir soru sormadınız, ama sormak istediğinizi düşündüğüm soruyu cevaplayacağım. Dizine bir veya daha fazla dosya ekleyin ve git addbunları bir taahhüt hazırlayın. Sonra git commitilk taahhüt ve masterşube oluşturmak için .


3
Peki, "master" diye bir şube işaretçisi hiç istemezsem ne olur? Ya "ana" olarak adlandırılmasını istersem? İlk dal işaretçisi için farklı bir adla başlamanın bir yolu yok mu? "Git init" parametresi yok mu? .Git / HEAD'de listelenen adı değiştirebilir miyim? Değiştirmem gereken başka dosyalar da var mı?
Jemenake

1
@Jemenake Sonra deponuzu başlatın, bir taahhütte bulunun ve şubeyi yeniden adlandırın. Eğer gerçekten bir "ana" Şimdiye kadar yaratılan dalı, düzenleme önlemek istiyorsanız .git/HEAD, ve değişimi refs/heads/masteriçin refs/heads/main, ama orada hiç bir neden bunu yapmak için. Sadece ilk taahhütten sonra şubenizi yeniden adlandırın.
meagar

13
git checkout -b <branchname>HEAD'i değiştirmek için kullanabilirsiniz - dosyayı düzenlemenize gerek yoktur.
Superfly Jon

1
Son bölüm altındı, TFS GIT tamamen başlatılmamış git repo ile geliyor. Yani SourceTree kullanarak ilk klondan sonra, hiçbir şey işe yaramazsa, "Sonra git ilk taahhüdünüzü ve ana dalınızı oluşturmak için taahhüt edin" e kadar uzun bir süre çözemedim. İlk taahhüt / itme olmadan master-local / remote almanın gerçekten bir yolu yok mu?
Pawel Cioch

Son açıklama, herhangi bir taahhüt yoksa şubenin var olamayacağını anlamama yardımcı olur.
Mayur Patil

23

İlk taahhüdünüzü yaptıktan sonra Git bir ana şube oluşturur. Depoda kod yoksa, şubeye sahip olacak bir şey yoktur.


1
Ama ustaya geçmek için yeni bir şubeye ihtiyacınız var.
Sören

1
İşte 'Git ilk taahhüdünüzü yaptıktan sonra bir ana şube oluşturur' ile ilgili bir soru. Öyleyse neden 'git status' tüm bunlardan önce 'Branch Master'da' gösteriyor?
Tick20

16

Öncelikle, bir "çıplak depo" oluşturduğunuzda, onunla herhangi bir iş yapmayacaksınız (çalışan bir kopya içermiyor, bu yüzden git branchkomut kullanışlı değil).

Şimdi, a masteryaptıktan sonra bile bir şubenizin olmamasının nedeni, git inittaahhütlerin olmamasıdır: ilk taahhüdünüzü oluşturduğunuzda, bir masterşubeniz olacaktır.


1
Tamam bu açık. Ama taahhüt ettiğimde şöyle diyor: ölümcül: boş ident
Roy van Zanten

Bunu sabitledim. Ama bu depoyu başka bir bilgisayardan çekmek / almak istediğimde. Git init'i orada yapmalı mıyım?
Roy van Zanten

@RoyvanZanten Alıcı tarafında git cloneyapmak zorunda kalmamak için kullanabilirsiniz git init.
Borealid

Hepsini çalıştırmayı başardım. Hata yok. Ama itmeye çalıştığımda şöyle diyor: Nesneleri yazma <bla> bla> Toplam <3/3> SUNUCU 59fa0tweirdcod04 master> master Ama sunucudaki dosyaları kontrol ettiğimde hiçbir şey yok.
Roy van Zanten

@RoyvanZanten Sunucu havuzuna mı yoksa sunucu çalışan kopyasına mı bakıyorsunuz ? git checkoutWC'nin .gitdizinde ne olduğunu yansıtmasını istiyorsanız bir yapmanız gerekir (ittiğiniz yer).
Borealid

12

Yeni bir şube oluşturmadan önce master'da en az bir kez taahhüt vermeniz gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.