ร้ายแรง: ไม่ใช่ชื่อวัตถุที่ถูกต้อง: 'master'


182

ฉันมีเซิร์ฟเวอร์ส่วนตัวที่ใช้งานคอมไพล์ 1.7 เมื่อฉัน

git init 

โฟลเดอร์ที่ไม่ได้สร้างสาขาหลัก สาเหตุเมื่อฉัน:

git branch 

มันไม่ได้แสดงรายการอะไรเลย เมื่อฉันทำ:

git --bare init

มันสร้างไฟล์ เมื่อฉันพิมพ์

git branch master 

มันบอกว่า:

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

ผลลัพธ์เดียวกันเมื่อพยายามสร้างสาขาใหม่:git branch newbranch
Sören

คำตอบ:


281

เมื่อฉันgit initโฟลเดอร์มันไม่ได้สร้างสาขาหลัก

นี่คือความจริงและพฤติกรรมที่คาดหวัง Git จะไม่สร้างmasterสาขาจนกว่าคุณจะทำอะไรบางอย่าง

เมื่อฉันทำgit --bare initมันจะสร้างไฟล์

non-bare git initจะสร้างไฟล์เดียวกันใน.gitไดเรกทอรีที่ซ่อนอยู่ในรากของโครงการของคุณ

เมื่อฉันพิมพ์git branch masterมันบอกว่า "ร้ายแรง: ไม่ใช่ชื่อวัตถุที่ถูกต้อง: 'master'"

นั่นคือพฤติกรรมที่ถูกต้องอีกครั้ง จนกว่าคุณจะยอมรับไม่มีสาขาหลัก

คุณยังไม่ได้ถามคำถาม แต่ฉันจะตอบคำถามที่ฉันคิดว่าคุณตั้งใจจะถาม เพิ่มหนึ่งไฟล์ขึ้นไปในไดเรกทอรีของคุณและgit addเพื่อเตรียมการส่งมอบ จากนั้นgit commitเพื่อสร้างความมุ่งมั่นและmasterสาขาเริ่มต้นของคุณ


3
ถ้าฉันไม่ต้องการให้ตัวชี้สาขาเรียกว่า "อาจารย์" เลยล่ะ? ถ้าฉันต้องการให้มันถูกเรียกว่า "main" ไม่มีวิธีใดที่จะเริ่มต้นด้วยชื่ออื่นสำหรับตัวชี้สาขาแรก? ไม่มีพารามิเตอร์ "git init" หรือไม่ ฉันขอเปลี่ยนชื่อเป็น. git / HEAD ได้ไหม มีไฟล์อื่น ๆ ที่ฉันจะต้องแก้ไขด้วยหรือไม่
Jemenake

1
@Jemenake จากนั้นเริ่มที่เก็บของคุณทำการคอมมิชชันและเปลี่ยนชื่อสาขา ถ้าคุณอยากจะหลีกเลี่ยง "ต้นแบบ" สาขาที่เคยถูกสร้างแก้ไข.git/HEADและการเปลี่ยนแปลงrefs/heads/masterไปrefs/heads/mainแต่มีเหตุผลที่ทุกคนจะทำเช่นนี้ เพียงเปลี่ยนชื่อสาขาของคุณหลังจากกระทำครั้งแรก
meagar

13
คุณสามารถใช้git checkout -b <branchname>เปลี่ยน HEAD ได้ - คุณไม่จำเป็นต้องแก้ไขไฟล์
Superfly Jon

1
ส่วนสุดท้ายคือทองคำ TFS GIT มาพร้อมกับ repo git ที่ไม่มีการกำหนดค่าโดยสิ้นเชิง ดังนั้นหลังจากโคลนครั้งแรกโดยใช้ SourceTree ไม่มีอะไรทำงานไม่สามารถคิดออกเป็นเวลานานจนกระทั่ง "จากนั้นคอมไพล์กระทำเพื่อสร้างการกระทำเริ่มต้นและสาขาหลักของคุณ" มีวิธีการที่จะมีต้นแบบท้องถิ่น / ระยะไกลโดยไม่ต้องกระทำการเริ่มต้น / ผลักดัน?
Pawel Cioch

คำอธิบายสุดท้ายช่วยให้ฉันเข้าใจสาขาไม่ได้หากไม่มีข้อผูกพัน
Mayur Patil

23

Git สร้างสาขาหลักเมื่อคุณทำคำสั่งแรกเสร็จแล้ว ไม่มีอะไรที่จะมีสาขาหากไม่มีรหัสในที่เก็บ


1
แต่คุณต้องการสาขาใหม่เพื่อผลักดันให้เป็นผู้เชี่ยวชาญ
Sören

1
นี่คือคำถามเกี่ยวกับ 'Git สร้างสาขาหลักเมื่อคุณทำคำมั่นสัญญาครั้งแรก' ถ้าอย่างนั้นทำไมสถานะ 'git' จึงแสดง 'On Branch Master' ก่อนหน้าทั้งหมด
Tick20

16

ก่อนอื่นเมื่อคุณสร้าง "คลังเก็บเปลือย" คุณจะไม่ทำงานใด ๆ กับมัน (ไม่มีสำเนาทำงานดังนั้นgit branchคำสั่งจะไม่มีประโยชน์)

ตอนนี้เหตุผลที่คุณจะไม่มีmasterสาขาแม้ว่าหลังจากทำ a git initก็คือไม่มีการผูกมัด: เมื่อคุณสร้างการส่งมอบครั้งแรกของคุณคุณจะมีmasterสาขา


1
ตกลงชัดเจน แต่เมื่อฉันยอมรับมันบอกว่า: ร้ายแรง: ident ว่างเปล่า
Roy van Zanten

ฉันคงที่ไป แต่เมื่อฉันต้องการดึง / เรียก repo นี้จากคอมพิวเตอร์เครื่องอื่น ฉันควรทำคอมไพล์ init ที่นั่นหรือ?
Roy van Zanten

@RoyvanZanten คุณสามารถใช้git cloneเพื่อบันทึกไม่ต้องทำgit initในด้านรับ
Borealid

ฉันจัดการเพื่อให้มันทำงานได้ทั้งหมด ไม่มีข้อผิดพลาด แต่เมื่อฉันพยายามที่จะผลักมันบอกว่า: การเขียนวัตถุ <bla> bla> รวม <3/3> ไปยังเซิร์ฟเวอร์ 59fa0tweirdcod04 master> master แต่เมื่อฉันตรวจสอบไฟล์บนเซิร์ฟเวอร์ไม่มีอะไรที่นั่น
Roy van Zanten

@RoyvanZanten คุณกำลังดูที่เก็บเซิร์ฟเวอร์หรือเซิร์ฟเวอร์ที่ใช้งานได้หรือไม่? คุณต้องทำgit checkoutหากคุณต้องการให้ WC แสดงสิ่งที่อยู่ใน.gitไดเรกทอรี (ซึ่งเป็นตำแหน่งที่คุณพุช)
Borealid

12

คุณต้องทำอย่างน้อยหนึ่งครั้งกับอาจารย์ก่อนที่จะสร้างสาขาใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.