fatal: Bukan nama objek yang valid: 'master'

182

Saya memiliki server pribadi yang menjalankan git 1.7 Ketika saya

git init 

folder itu tidak membuat cabang master. Karena ketika saya melakukannya:

git branch 

itu tidak mencantumkan apa pun. Ketika saya melakukannya:

git --bare init

itu menciptakan file. Saat saya mengetik

git branch master 

ia mengatakan:

fatal: Not a valid object name: 'master'.
Roy van Zanten
sumber
Hasil yang sama ketika mencoba untuk menghasilkan cabang baru:git branch newbranch
Sören

Jawaban:

281

Ketika saya git initfolder itu tidak membuat cabang master

Ini benar, dan perilaku yang diharapkan. Git tidak akan membuat mastercabang sampai Anda melakukan sesuatu.

Ketika saya melakukannya, git --bare initia menciptakan file.

Non-telanjang git initjuga akan membuat file yang sama, di .gitdirektori tersembunyi di root proyek Anda.

Ketika saya mengetiknya git branch mastermengatakan "fatal: Bukan nama objek yang valid: 'master'"

Itu lagi perilaku yang benar. Sampai Anda berkomitmen, tidak ada cabang master .

Anda belum mengajukan pertanyaan, tetapi saya akan menjawab pertanyaan yang saya duga Anda maksudkan. Tambahkan satu atau lebih file ke direktori Anda, dan git addmereka menyiapkan komit. Kemudian git commituntuk membuat komit dan mastercabang awal Anda .

meagar
sumber
3
Jadi, bagaimana jika saya tidak pernah menginginkan pointer cabang yang disebut "master" sama sekali? Bagaimana jika saya ingin itu disebut "utama"? Tidak ada cara untuk memulai dengan nama berbeda untuk penunjuk cabang pertama? Tidak ada parameter "git init"? Bisakah saya mengubah nama yang tercantum di .git / HEAD? Apakah ada beberapa file lain yang perlu saya ubah?
Jemenake
1
@Jemenake Kemudian init repositori Anda, buat komit, dan ganti nama cabang. Jika Anda benar-benar ingin menghindari cabang "master" yang pernah dibuat, edit .git/HEAD, dan ubah refs/heads/mastermenjadi refs/heads/main, tetapi tidak ada alasan sama sekali untuk melakukan ini. Cukup ganti nama cabang Anda setelah komit pertama.
meagar
13
Anda dapat menggunakan git checkout -b <branchname>untuk mengubah HEAD - Anda tidak perlu mengedit file.
Superfly Jon
1
Bagian terakhir adalah emas, TFS GIT hadir dengan git repo yang sama sekali tidak diinisialisasi. Jadi setelah klon pertama menggunakan SourceTree, tidak ada yang berhasil, tidak bisa mengetahuinya untuk waktu yang lama sampai "Lalu git berkomitmen untuk membuat komit awal dan cabang master Anda". Apakah benar-benar tidak ada cara untuk memiliki master-lokal / remote tanpa komit / push awal?
Pawel Cioch
Penjelasan terakhir membantu saya untuk memahami cabang tidak bisa ada jika tidak ada komitmen.
Mayur Patil
23

Git membuat cabang master setelah Anda melakukan komit pertama Anda. Tidak ada yang memiliki cabang untuk jika tidak ada kode di repositori.

pengguna489998
sumber
1
Tetapi Anda membutuhkan cabang baru untuk mendorong ke master.
Sören
1
berikut adalah pertanyaan tentang 'Git membuat cabang master setelah Anda melakukan komit pertama Anda.' Lalu mengapa 'git status' menunjukkan 'On Branch Master' sebelum semua ini?
Tick20
16

Pertama, ketika Anda membuat "repositori kosong", Anda tidak akan melakukan pekerjaan apa pun dengannya (itu tidak mengandung copy pekerjaan, jadi git branchperintahnya tidak berguna).

Sekarang, alasan Anda tidak akan memiliki mastercabang bahkan setelah melakukan git initadalah karena tidak ada komitmen: ketika Anda membuat komit pertama Anda, Anda kemudian akan memiliki mastercabang.

Borealid
sumber
1
Oke, itu jelas. Tetapi ketika saya komit dikatakan: fatal: empty ident
Roy van Zanten
Saya memperbaikinya. Tetapi ketika saya ingin menarik / mengambil repo ini dari komputer lain. Haruskah saya melakukan git init di sana?
Roy van Zanten
@RoyvanZanten Anda dapat menggunakan git cloneuntuk menyimpan harus melakukan git initdi sisi penerima.
Borealid
Saya berhasil membuat semuanya berfungsi. Tidak ada kesalahan Tetapi ketika saya mencoba untuk mendorongnya mengatakan: Menulis objek <bla> bla> Total <3/3> Untuk SERVER 59fa0tweirdcod04 master> master Tetapi ketika saya memeriksa file di server tidak ada yang ada.
Roy van Zanten
@RoyvanZanten Apakah Anda sedang melihat repositori server atau copy pekerjaan server ? Anda perlu melakukan git checkoutjika Anda ingin WC untuk mencerminkan apa yang ada di .gitdirektori (yang mana Anda mendorong).
Borealid
12

Anda perlu melakukan setidaknya satu kali pada master sebelum membuat cabang baru.

Dana
sumber