Git คือระบบควบคุมเวอร์ชันแบบกระจายที่ใช้เป็นหลักในการติดตามการเปลี่ยนแปลงในซอร์สโค้ดขณะพัฒนาซอฟต์แวร์ GitHub เป็นบริการโฮสติ้งออนไลน์สำหรับการควบคุมเวอร์ชันที่ใช้ Git บริการทั้งสองนี้ใช้กันอย่างแพร่หลายในการพัฒนาซอฟต์แวร์ อย่างไรก็ตาม เมื่อเร็วๆ นี้มีรายงานจำนวนมากเกี่ยวกับผู้ใช้ที่ไม่สามารถรันคำสั่ง "git" ได้
คุณไม่ได้โดดเดี่ยว. คุณคิดว่าคุณเชี่ยวชาญเวิร์กโฟลว์ Git จนกว่าคุณจะพบข้อผิดพลาดที่คุณไม่เคยเห็นมาก่อน แทบจะหลีกเลี่ยงไม่ได้ว่าคุณจะพบข้อความแสดงข้อผิดพลาดที่ทำให้งงงวยและบางครั้งก็น่ากลัวในขณะที่ทำงานกับ Git ดังนั้นสิ่งแรกที่ต้องจำไว้ก็คือผู้ใช้ Git คนอื่นๆ สามารถเกี่ยวข้องกับชะตากรรมของคุณได้
ผู้ใช้ Git ไม่ใช่คนแปลกหน้าสำหรับสิ่งที่น่ารำคาญนี้ Git Fatal:'Origin' ไม่ปรากฏว่าเป็นที่เก็บ git ข้อผิดพลาด. และการหาสาเหตุที่แท้จริงอาจเป็นเรื่องยากหากคุณไม่รู้ว่าจะหาที่ใด แต่ก่อนที่คุณจะละทิ้ง Git คุณสามารถเรียนรู้ได้อย่างรวดเร็วถึงสาเหตุของข้อผิดพลาดนี้ วิธีการวินิจฉัย และวิธีหลีกเลี่ยงในอนาคต
เคล็ดลับแบบมือโปร:สแกน Mac ของคุณเพื่อหาปัญหาด้านประสิทธิภาพ ไฟล์ขยะ แอพที่เป็นอันตราย และภัยคุกคามด้านความปลอดภัย
ที่อาจทำให้ระบบมีปัญหาหรือทำงานช้าได้
อะไรคือ ร้ายแรง:'Origin' ไม่ปรากฏว่าเป็นที่เก็บคอมไพล์ ปัญหา?
คำสั่ง git init เริ่มต้นการสร้างที่เก็บ Git ใหม่ คำสั่งนี้เพียงแค่ตั้งค่าโฟลเดอร์เป็นที่เก็บ Git มันไม่ได้เชื่อมต่อที่เก็บข้อมูลหนึ่งไปยังอีกที่หนึ่ง
ในทางกลับกัน คำสั่ง git clone จะเชื่อมต่อที่เก็บโลคัลกับรีโมต นี่เป็นเพราะ Git รู้ว่าโค้ดของโปรเจ็กต์มาจากไหน และใช้ตำแหน่งที่คุณโคลนเพื่อคาดการณ์ว่าคุณจะพุชคอมมิตที่ใด
เมื่อคุณสร้างที่เก็บใหม่และพยายามคอมมิตโค้ดโดยไม่ได้สั่ง Git ก่อนว่าควรผลักโค้ดไปที่ใด คุณจะได้รับข้อผิดพลาด “fatal:'origin' ไม่ปรากฏเป็น git repository”
ที่เก็บ Git คืออะไร
ที่เก็บ GIT มีคอลเล็กชันของไฟล์จากเวอร์ชันต่างๆ ของโปรเจ็กต์ ไฟล์เหล่านี้นำเข้าจากที่เก็บไปยังเซิร์ฟเวอร์ภายในของผู้ใช้เพื่ออัปเดตและแก้ไขเนื้อหาของไฟล์เพิ่มเติม VCS หรือระบบควบคุมเวอร์ชันใช้เพื่อสร้างเวอร์ชันเหล่านี้และบันทึกไว้ในตำแหน่งที่เรียกว่าที่เก็บ การโคลนเป็นกระบวนการคัดลอกเนื้อหาจากที่เก็บ Git ที่มีอยู่โดยใช้เครื่องมือ Git ต่างๆ
เมื่อกระบวนการโคลนเสร็จสิ้น ผู้ใช้จะได้รับที่เก็บทั้งหมดบนเครื่องในพื้นที่ของตน เมื่อการโคลนเสร็จสิ้น Git จะถือว่างานในอนาคตทั้งหมดบนที่เก็บจะดำเนินการในฐานะผู้ใช้ ผู้ใช้ยังสามารถสร้างที่เก็บใหม่หรือลบที่เก็บที่มีอยู่ วิธีที่ง่ายที่สุดในการลบที่เก็บคือเพียงแค่ลบโฟลเดอร์ของที่เก็บ
เมื่อทำงานกับที่เก็บ Git คุณกำลังทำงานกับไดเร็กทอรีที่ได้รับการกำหนดค่าเป็นโปรเจ็กต์ Git สามารถใช้ Git เพื่อสร้างไดเร็กทอรีเกือบใดก็ได้ในเครื่องคอมพิวเตอร์ของคุณหรือบนเซิร์ฟเวอร์ระยะไกล
ในการวินิจฉัยอย่างถูกต้องว่าทำไมโปรเจ็กต์ Git ของคุณไม่ยอมรับคำสั่งหรือเหตุใดระบบไม่รู้จักที่เก็บระยะไกลของคุณ ก่อนอื่นคุณต้องเข้าใจสิ่งที่ Git มองหาเมื่อพยายามโต้ตอบกับที่เก็บ
ไดเร็กทอรีใดๆ ทั้งโลคัลหรือรีโมต ต้องเป็น Git-initialized ซึ่งหมายความว่าคุณต้องเรียกใช้คำสั่งต่อไปนี้:git init
หากคุณรันคำสั่งนี้ในไดเร็กทอรีโลคัล ไดเร็กทอรีนั้นจะถูกแปลงเป็นที่เก็บ Git ข้อความแสดงความสำเร็จจะปรากฏขึ้นเพื่อระบุว่าคำสั่งสำเร็จ นอกจากนี้ คุณจะสังเกตเห็นว่าที่เก็บ Git ทุกแห่งมี .git ไดเร็กทอรี ที่เก็บไฟล์สำคัญและจุดอ้างอิงไว้
ในทางกลับกัน เป็นเรื่องปกติที่จะใช้ –bare ตัวเลือกเมื่อเริ่มต้นที่เก็บระยะไกล:git init –bare
สิ่งนี้จะสร้างพื้นที่เก็บข้อมูล "เปล่า" ซึ่งโดยพื้นฐานแล้วเป็นไดเร็กทอรีว่างที่เริ่มต้นด้วย Git และสามารถรับและรันคำสั่ง Git ที่ส่งไป ที่เก็บเปล่าเป็น "ฮับ" ที่ยอดเยี่ยมซึ่งผู้ใช้ Git หนึ่งรายขึ้นไปสามารถโคลน พุช และดึงโปรเจ็กต์ได้
ที่เก็บ Git ไม่ได้เชื่อมโยงกับที่เก็บระยะไกลโดยอัตโนมัติ คุณจะได้รับข้อผิดพลาด "ร้ายแรง:'ต้นกำเนิด' ไม่ปรากฏว่าเป็นที่เก็บ git" หากคุณพยายามผลักดันการเปลี่ยนแปลงไปยังที่เก็บระยะไกลโดยไม่ระบุตำแหน่งก่อน
สาเหตุ สาเหตุร้ายแรง 'Origin' ไม่ปรากฏว่าเป็นที่เก็บคอมไพล์ ผิดพลาด?
เมื่อคุณพยายามโคลนหรือเรียกใช้คำสั่งอื่นในไดเร็กทอรีที่ไม่รู้จักว่าเป็นที่เก็บ Git ข้อผิดพลาด "ร้ายแรง:'ต้นกำเนิด' ไม่ปรากฏว่าเป็นที่เก็บ git" เป็นไปได้ว่าไดเร็กทอรีหรือเส้นทางไฟล์ระยะไกลไม่ได้เริ่มต้น Git หรือเส้นทางของไฟล์ที่คุณพยายามเข้าถึงเนื่องจากที่เก็บที่ใช้งานอยู่ไม่ถูกต้อง นี่คือปัจจัยที่ทำให้เกิดข้อผิดพลาดนี้:
- ไม่มี Origin:ข้อผิดพลาดนี้เกิดขึ้นเมื่อช่อง "Origin" หายไป คำสั่งบางคำสั่งทำงานไม่ถูกต้องหากไม่มีการอ้างอิงถึง “Github-Fork”
- URL ไม่ถูกต้อง:ในบางกรณี การกำหนดค่า URL ที่กำหนดโดยแอปพลิเคชันอาจไม่ถูกต้องและต้องมีการเปลี่ยนแปลง ด้วยเหตุนี้ บางคำสั่งจึงอาจทำงานไม่ถูกต้อง
โดยพื้นฐานแล้ว Git บ่งชี้ว่าที่เก็บที่คุณพยายามทำงานด้วยนั้นไม่รู้จักว่าเป็นโปรเจ็กต์ Git ด้วยเหตุนี้ หากคุณเชื่อว่าคุณได้ตั้งค่าทุกอย่างถูกต้องแล้ว ข้อผิดพลาดก็อาจทำให้หงุดหงิดใจได้ แต่อย่ากังวล พิมพ์ผิดง่ายๆ อาจทำให้เกิดข้อผิดพลาด
เราจะมาพูดถึงแนวทางแก้ไขกันในตอนนี้ เพื่อให้คุณมีความเข้าใจพื้นฐานเกี่ยวกับธรรมชาติของปัญหา อ่านต่อเพื่อค้นหาสิ่งที่คุณสามารถทำได้เพื่อวินิจฉัยและรักษาข้อผิดพลาดนี้
วิธีแก้ปัญหา ร้ายแรง:'Origin/Master' ไม่ปรากฏว่าเป็นที่เก็บ git' ผิดพลาด
ข้อผิดพลาดนี้อาจเป็นเรื่องที่น่าหงุดหงิดเพราะเป็นการรบกวนและใช้เวลานาน วิธีหนึ่งในการหลีกเลี่ยงข้อบกพร่อง เช่น “ต้นทางที่ร้ายแรงไม่ปรากฏว่าเป็นที่เก็บ git” ที่เกิดขึ้นคือการสแกนอุปกรณ์ของคุณเป็นประจำด้วย Outbyte MacAries เครื่องมือนี้ป้องกันไม่ให้ปัญหาเล็กๆ น้อยๆ ก่อตัวและกลายเป็นความโกลาหลโดยสิ้นเชิง
แต่ถ้าคุณพบข้อผิดพลาดนี้ ขั้นตอนเหล่านี้ควรแก้ไขให้คุณได้ง่ายๆ:
แก้ไข #1:เพิ่ม Origin
เมื่อคุณพยายามส่งไปยังที่เก็บ git ที่สร้างขึ้นใหม่ซึ่งสร้างขึ้นด้วยคำสั่ง git init คุณจะได้รับข้อผิดพลาด “fatal:'origin' ไม่ปรากฏว่าเป็นที่เก็บ git” นี่เป็นเพราะความจริงที่ว่า git init ไม่ได้เชื่อมโยงที่เก็บในเครื่องกับที่เก็บระยะไกล คุณสามารถทดสอบได้โดยพิมพ์:git remote -v
หากไม่มีที่เก็บระยะไกลที่เรียกว่า ต้นทาง คุณควรเพิ่มด้วยตนเองโดยทำตามวิธีแก้ไขด้านล่าง
- กดปุ่ม “คำสั่ง ” และ “อวกาศ ” พร้อมกัน นี่ควรเปิด Spotlight
- พิมพ์ “เทอร์มินัล ” และกด “ย้อนกลับ ."
- ป้อนคำสั่งต่อไปนี้แล้วกดปุ่ม “ย้อนกลับ ”:git remote -v
- ตรวจสอบเพื่อดูว่ามีที่เก็บระยะไกลชื่อ “Origin . หรือไม่ ” อยู่ในรายการ
- หากไม่เป็นเช่นนั้น แสดงว่าไม่มี "Origin"
- ใช้คำสั่งต่อไปนี้เพื่อเพิ่ม Origin:git remote add origin url/to/your/fork
ตรวจสอบเพื่อดูว่าปัญหายังคงมีอยู่หรือไม่
แก้ไข #2:ตรวจสอบเส้นทางไฟล์ของที่เก็บระยะไกลของคุณ
เมื่อพยายามโคลน พุช หรือดึงเนื้อหาจากที่เก็บระยะไกล ผู้ใช้ Git มักจะพบข้อผิดพลาด "ที่มาไม่ปรากฏว่าเป็นที่เก็บ git ที่ร้ายแรง" ตรวจสอบให้แน่ใจว่าได้ตรวจสอบเส้นทางไฟล์ของที่เก็บระยะไกลอีกครั้ง มีหลายวิธีในเรื่องนี้
หากคุณกำลังโคลน ให้ตรวจสอบอีกครั้งว่าคุณมีสิทธิ์เข้าถึงที่เก็บที่จำเป็น หากคุณไม่ได้โคลนที่เก็บข้อมูลสาธารณะบน GitHub คุณอาจกำลังเชื่อมต่อผ่าน SSH ในทำนองเดียวกัน คุณควรตรวจสอบไวยากรณ์ของคำสั่งโคลนของคุณ ต่อไปนี้คือตัวอย่างคำสั่งโคลนพื้นฐานที่เชื่อมต่อกับที่เก็บผ่าน HTTP:git clone https://github.com/WordPress/WordPress.git
เมื่อคุณเรียกใช้คำสั่งนี้ในเทอร์มินัลอีมูเลเตอร์ที่คุณต้องการ คำสั่งจะสร้างไดเร็กทอรีชื่อ “WordPress” ที่มีไฟล์หลักของ WordPress ทั้งหมด นอกจากนี้ยังจะรวมไดเร็กทอรี .git และประวัติโครงการทั้งหมดด้วย ด้วยเหตุนี้ ไดเร็กทอรีนี้จึงเป็นที่เก็บ git ภายในเครื่องที่ทำงานได้อย่างสมบูรณ์ นอกจากนี้ยังจะมีการตั้งค่าข้อมูลที่เก็บระยะไกล (ที่ GitHub) อย่างถูกต้อง
อย่างไรก็ตาม หากคุณกำลังสื่อสารกับเซิร์ฟเวอร์ส่วนตัวที่ไม่มีการเข้าถึง HTTP คุณต้องแก้ไขไวยากรณ์นี้เพื่อรวมผู้ใช้เซิร์ฟเวอร์ที่มีสิทธิ์ที่เหมาะสม ด้วยเหตุนี้ เมื่อกำหนดค่าเซิร์ฟเวอร์ Git ส่วนตัว คุณควรสร้างผู้ใช้ “Git” พิเศษพร้อมการเข้าถึงที่เก็บ:git clone [email protected]:/home/user/production.git
ไม่เหมือนกับตัวแปร HTTP จาก GitHub URL โคลนนี้มี [email protected] ในกรณีนี้ “ผู้ใช้” คือผู้ใช้เซิร์ฟเวอร์ที่มีสิทธิ์เข้าถึงและมีสิทธิ์เข้าถึงที่เก็บ Git ของเซิร์ฟเวอร์ ชื่อโฮสต์ ชื่อโดเมน หรือที่อยู่ IP ของเซิร์ฟเวอร์ที่คุณพยายามติดต่อคือปลายทาง การประกาศผู้ใช้และเซิร์ฟเวอร์แยกจากพาธไฟล์ด้วยโคลอน (:)
เส้นทางของไฟล์มีความสำคัญในกรณีนี้ ตำแหน่งและชื่อที่แน่นอนของที่เก็บของคุณจะถูกระบุโดยเส้นทางของไฟล์ ที่เก็บในตัวอย่างก่อนหน้าคือไดเร็กทอรีชื่อ production.git
ใช้นามสกุล .git สำหรับไดเร็กทอรีที่เก็บของคุณเสมอ ไดเร็กทอรี production.git จะอยู่ในโฮมไดเร็กทอรีของผู้ใช้ ซึ่งก็คือ /home/user.
คุณต้องทำซ้ำไวยากรณ์นี้อย่างแม่นยำไม่เช่นนั้นคุณจะได้รับข้อผิดพลาด "ร้ายแรง:'ต้นกำเนิด' ไม่ปรากฏว่าเป็นที่เก็บ git"
แก้ไข #3:เปลี่ยน Origin เป็น Master
หากคุณกำลังพยายามดึงจาก Master คุณต้องเปลี่ยนต้นทางเป็น Master ก่อนก่อนที่จะพยายามเพิ่มหรือลบที่เก็บระยะไกล ด้วยเหตุนี้ ในขั้นตอนนี้ เราจะเปลี่ยน Origin เป็น Master ในการดำเนินการนี้:
- กดปุ่ม “คำสั่ง ” และ “อวกาศ ” พร้อมกัน นี่ควรเปิด Spotlight
- พิมพ์ “เทอร์มินัล ” และกด “ย้อนกลับ ."
- ป้อนคำสั่งที่นี่เพื่อเปลี่ยน Origin เป็นมาสเตอร์:git pull origin master
ตรวจสอบว่าปัญหา “ร้ายแรง:ต้นกำเนิด” ไม่ปรากฏว่าเป็นที่เก็บ git” หายไปหรือไม่
แก้ไข #4:แก้ไขไฟล์ HEAD ที่เสียหาย
หากขั้นตอนการแก้ไขปัญหาข้างต้นไม่สามารถแก้ปัญหาของคุณได้ แสดงว่าคุณอาจมีปัญหากับไฟล์ HEAD ไฟล์นี้มีหนึ่งบรรทัดที่ทำหน้าที่เป็นตัวชี้ไปยังสาขาปัจจุบันของคุณ
หากคุณเพิ่งเริ่มใช้ Git คำว่า "สาขา" อาจไม่คุ้นเคยสำหรับคุณ สาขาคือเวอร์ชันของที่เก็บของคุณที่คุณสามารถใช้เพื่อทดสอบการเปลี่ยนแปลงโปรเจ็กต์ ที่เก็บทุกแห่งมีสาขาหลักที่ทำหน้าที่เป็นแหล่งที่มาของความจริงและควรเป็นเวอร์ชันที่ใช้งานจริงในเวอร์ชันที่ใช้งานจริง หากคุณต้องการเปลี่ยนแปลงสาขาหลัก คุณสามารถสร้างเวอร์ชันแยกต่างหากของโครงการหรือสาขาเพื่อทดสอบการเปลี่ยนแปลง Git จะอัปเดตไฟล์ HEAD เพื่อให้สอดคล้องกับสาขาการทำงานปัจจุบันของคุณเมื่อคุณสร้างสาขาใหม่
อย่างไรก็ตาม ไฟล์ HEAD อาจเสียหายได้ในบางกรณี ส่งผลให้ Fatal:'Origin' ไม่ปรากฏว่าเป็น Git Repository ข้อผิดพลาด. ในการตรวจสอบไฟล์ HEAD คุณสามารถใช้ cat .git/HEAD คำสั่งพิมพ์เนื้อหา
เมื่อคุณเรียกใช้คำสั่งนี้ คุณควรเห็นชื่อสาขาปัจจุบันของคุณ หากไม่มีสาขาปัจจุบันที่คุณกำลังทำงานอยู่ คุณต้องอัปเดตไฟล์ คุณสามารถทำได้โดยพิมพ์คำสั่งต่อไปนี้: echo ‘ref:refs/heads/
บทสรุป
คุณไม่ต้องเครียดเมื่อคุณพบกับ Fatal:'Origin' ไม่ปรากฏว่าเป็นข้อผิดพลาดของ Git Repository หากคุณได้รับปัญหานี้ โปรดทราบว่า Git กำลังพยายามแจ้งให้คุณทราบว่าไดเรกทอรีการทำงานปัจจุบันของคุณไม่ได้รับการติดตาม ดังนั้นให้ทำตามขั้นตอนพื้นฐานที่สรุปไว้ในบทความนี้ ซึ่งสรุปได้ดังนี้:
- เพิ่ม Origin ด้วยตนเอง
- ตรวจสอบว่าคุณพิมพ์ชื่อไดเรกทอรีถูกต้อง
- ตรวจสอบว่าคุณสร้างที่เก็บอย่างถูกต้อง หากไดเรกทอรีไม่มีที่เก็บ .git ให้ใช้ git init เพื่อเริ่มต้นที่เก็บอย่างถูกต้องหรือโคลนที่เก็บที่มีอยู่
- ตรวจสอบว่าไฟล์ HEAD ของคุณในสาขาปัจจุบันมีข้อมูลที่ถูกต้อง ถ้าไม่ ให้เปลี่ยนเนื้อหาของไฟล์เป็น ref:refs/heads/
การทำตามขั้นตอนการแก้ไขปัญหาที่อธิบายไว้ข้างต้นจะช่วยให้คุณแก้ไขข้อผิดพลาดในเกือบทุกกรณีได้ในเวลาเพียงไม่กี่นาที