Git: ไม่สามารถชำระเงินได้สาขา - ข้อผิดพลาด: pathspec '…' ไม่ตรงกับไฟล์ใด ๆ ที่ git รู้จัก


707

ฉันไม่แน่ใจว่าทำไมฉันไม่สามารถเช็คเอาท์สาขาที่ฉันเคยทำมาก่อนหน้านี้ ดูคำสั่งด้านล่าง (หมายเหตุ: coเป็นนามแฝงสำหรับcheckout):

ramon@ramon-desktop:~/source/unstilted$ git branch -a
* develop
  feature/datts_right
  feature/user_controlled_menu
  feature/user_controlled_site_layouts
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/feature/datts_right
  remotes/origin/master
ramon@ramon-desktop:~/source/unstilted$ git co feature/user_controlled_site_layouts 
error: pathspec 'feature/user_controlled_site_layouts' did not match any file(s) known to git.

ฉันไม่แน่ใจว่ามันหมายถึงอะไรและฉันไม่สามารถหาอะไรที่ฉันสามารถเข้าใจได้ใน Google

ฉันจะชำระเงินที่สาขานั้นได้อย่างไรและฉันควรทำอย่างไรเพื่อหยุดสิ่งนี้

อัปเดต :

ฉันพบโพสต์นี้และการทำงานgit show-refให้ฉัน:

97e2cb33914e763ff92bbe38531d3fd02408da46 refs/heads/develop
c438c439c66da3f2356d2449505c073549b221c1 refs/heads/feature/datts_right
11a90dae8897ceed318700b9af3019f4b4dceb1e refs/heads/feature/user_controlled_menu
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/heads/master
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/remotes/origin/HEAD
e7c17eb40610505eea4e6687e4572191216ad4c6 refs/remotes/origin/develop
c438c439c66da3f2356d2449505c073549b221c1 refs/remotes/origin/feature/datts_right
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/remotes/origin/master
23768aa5425cbf29d10ff24274adad42d90d15cc refs/stash
e572cf91e95da03f04a5e51820f58a7306ce01de refs/tags/menu_shows_published_only
429ebaa895d9d41d835a34da72676caa75902e3d refs/tags/slow_dev

อัปเดตใน.gitไดเรกทอรี ( user_controlled_site_layoutsอยู่ในrefs/heads/feature folder):

$ ls .git/refs/heads/feature/
datts_right  user_controlled_menu  user_controlled_site_layouts
$ cat .git/refs/heads/feature/user_controlled_site_layouts
3af84fcf1508c44013844dcd0998a14e61455034

อัปเดตเมื่อ git show 3af84fcf1508c44013844dcd0998a14e61455034

$ git show 3af84fcf1508c44013844dcd0998a14e61455034
commit 3af84fcf1508c44013844dcd0998a14e61455034
Author: Ramon Tayag <xxx@xxxxx.xxx>
Date:   Thu May 12 19:00:03 2011 +0800

    Removed site layouts migration

diff --git a/db/schema.rb b/db/schema.rb
index 1218fc8..2040b9f 100755
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended to check this file into your version control system.

-ActiveRecord::Schema.define(:version => 20110511012647) do
+ActiveRecord::Schema.define(:version => 20110503040056) do

   create_table "attachments", :force => true do |t|
     t.string   "name"
@@ -205,15 +205,6 @@ ActiveRecord::Schema.define(:version => 20110511012647) do
     t.integer  "old_id"
   end

-  create_table "site_layouts", :force => true do |t|
-    t.string   "name"
-    t.text     "description"
-    t.text     "content"
-    t.integer  "site_id"
-    t.datetime "created_at"
-    t.datetime "updated_at"
-  end
-
   create_table "site_styles", :force => true do |t|
     t.text     "published"
     t.datetime "created_at"

อาจช่วยได้ไหม? stackoverflow.com/questions/2527355/…
Boldewyn

มันทำงานถ้าคุณทำ: git checkout refs/heads/user_controlled_site_layouts?
Mark Longair

2
ทำเครื่องหมายว่ายังไม่ได้รับข้อผิดพลาดเดียวกัน
Ramon Tayag

1
เห็นการปรับปรุงของคุณผมไม่แน่ใจว่าคุณได้มีสาขาที่ปรากฏในแต่ไม่ได้อยู่ในgit branch -a git show-refไฟล์.git/refs/heads/feature/user_controlled_site_layoutมีอยู่จริงหรือไม่? ถ้าเป็นเช่นนั้นจะcat .git/refs/heads/feature/user_controlled_site_layoutให้อะไร
Mark Longair

1
ฉันได้รับข้อผิดพลาดเดียวกันฉันสร้างสาขาจาก repo อื่นและลองเช็คเอาต์สาขานั้นไปที่ repo อื่น ดังนั้นฉันได้รับเพราะ repos ที่แตกต่างกัน
Kushan Gunasekera

คำตอบ:


950

ลองใช้git fetchพื้นที่เก็บข้อมูลในเครื่องของคุณเพื่อรับข้อมูลใหม่ทั้งหมดจาก Github ใช้เพียงข้อมูลเกี่ยวกับสาขาใหม่และไม่มีรหัสจริง หลังจากนั้นgit checkoutควรทำงานได้ดี


19
สำหรับการชี้แจงเพิ่มเติมgit fetchมีประโยชน์เมื่อคุณต้องการซิงโครไนซ์ที่เก็บข้อมูลโลคัลของคุณกับที่เก็บรีโมต แต่คุณไม่ต้องการรวมการเปลี่ยนแปลงในโฟลเดอร์การทำงานของคุณ
Mark Lakata

140
ในกรณีของการโคลนนิ่งที่มีรีโมตหลายตัวเครื่องgit checkout Branchจะไม่ทำงาน ด้วยรีโมตหลายรายการเพียงชื่อสาขาไม่ชัดเจนและต้องการข้อกำหนดของรีโมต / สาขา คำสั่งgit checkout -b branch remote/branchทำงานในสถานการณ์นั้น
Umair Ishaq

1
ฉันมีการจัดการเพื่อสร้าง "ต้นแบบ" ในพื้นที่อย่างใดดังนั้นแม้ว่า "เรียก git" เข้ามาใกล้ฉันฉันต้องลบต้นแบบท้องถิ่นของฉันก่อน ("git branch -d master") ก่อนที่จะเปลี่ยนเป็นต้นแบบระยะไกล ("เช็คเอาต์ git ต้นแบบ ") ในกรณีที่ช่วยคนอื่นที่โง่เหมือนฉัน!
เจมี่บราวน์

1
@ Aleks มันไม่ใช่คำตอบที่ยอมรับเพราะมันไม่มีส่วนเกี่ยวข้องกับคำถามของ OP เขาไม่สามารถตรวจสอบสาขาที่เขาเคยเช็คเอาต์ก่อนหน้านี้ (เช่นสร้าง) ภายในเครื่องแล้ว เพียงเพราะคนอื่นที่มีปัญหาพื้นฐานแตกต่างกันมากก็พบ & upvoted คำตอบนี้ (ซึ่งเป็นเรื่องเล็กน้อยและเป็นที่รู้จักสำหรับผู้ใช้ git ที่มีประสบการณ์มากกว่าสองวัน) ไม่ได้หมายความว่า OP ควรยอมรับมัน
Michael Johnston

12
git fetchสามารถทำงานได้ แต่มันอาจล้มเหลวในการรับกิ่งไม้ทั้งหมดจากระยะไกล คุณต้องกำหนดรูปแบบการจับคู่การดึงข้อมูล git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"อ้างอิง: stackoverflow.com/questions/11623862/…
Jichao

363

ฉันได้รับข้อผิดพลาดนี้เมื่อฉันพยายามเช็คเอาท์สาขาใหม่:

ข้อผิดพลาด: pathspec 'BRANCH-NAME' ไม่ตรงกับไฟล์ใด ๆ ที่ git รู้จัก

เมื่อฉันลองgit checkout origin/<BRANCH-NAME>ฉันได้รับ HEAD เดี่ยว:

(แยกจากต้นกำเนิด /)

ในที่สุดฉันได้ทำสิ่งต่อไปนี้เพื่อแก้ไขปัญหา :

git remote update
git fetch 
git checkout --track origin/<BRANCH-NAME>

15
ด้วยคำสั่ง "checkout" ฉันมีข้อความนี้: ร้ายแรง: ไม่สามารถอัปเดตพา ธ และเปลี่ยนเป็นสาขา 'foo' ในเวลาเดียวกัน
NEOline

1
หลังจากแก้ไขที่อยู่ระยะไกลด้วยตนเองฉันไม่สามารถชำระเงินสาขาใหม่ได้ "git remote update" ดูเหมือนจะหลอกลวง
martin

หากไม่มี "git remote update" ก็ใช้ไม่ได้ ขอบคุณ!
Kristiyan Tsvetanov

git checkout --track origin/staging fatal: git checkout: --track and --no-track require -bgit เวอร์ชั่น 1.5.6.5
Ivan Borshchov

ใช้ถัดไปแทนคำสั่งที่สามgit checkout -b staging --track origin/staging
Ivan Borshchov

152

ฉันได้รับข้อผิดพลาดนี้สำหรับสาขาที่อยู่ห่างไกลและไม่มีสาขาติดตามท้องถิ่น แม้ว่าฉันแน่ใจว่าฉันได้ตรวจสอบสาขาระยะไกลผ่านง่าย

git checkout feature/foo

ในอดีตเพื่อแก้ไขข้อผิดพลาดนี้ฉันต้อง

git checkout -t -b feature/foo origin/feature/foo

ฉันไม่รู้ว่าจะทำอย่างไรเพื่อให้ตนเองเข้าสู่สถานการณ์นั้น


1
น่าเสียดายที่ฉันไม่ได้ผลักมันไปที่เซิร์ฟเวอร์ git ระยะไกล
Ramon Tayag

สิ่งนี้ใช้ได้สำหรับฉัน มันเกิดขึ้นใน git v 1.6 บนเครื่อง FC10
FractalSpace

26
ปกติแล้ว Git จะเดาว่าสาขาจากระยะไกลนั้นจะเช็คเอาท์ แต่เมื่อใช้รีโมตมากกว่าหนึ่งตัวดูเหมือนว่าจะไม่สามารถทำได้อีกต่อไป ที่มา: makandracards.com/makandra/…
Elijah Lynn

1
การทำคุณสมบัติการชำระเงิน git / foo แทนที่จะเป็นเพียงแค่การชำระเงิน git foo ทำงานให้ฉัน
Alejandro Moreno

สิ่งนี้เริ่มเกิดขึ้นกับฉัน (ใน repo ที่มีรีโมตมากมายและหลายร้อยสาขาซึ่งฉันได้ทำการตรวจสอบสาขาจากต้นกำเนิดเป็นเวลา 3 ปี) และฉันก็ประหลาดใจ เมื่อตรวจสอบฉันพบว่าฉันได้เพิ่มรีโมตใหม่และฉันก็ทำมันด้วย copy / paste ใน text editor แทนที่จะใช้คำสั่ง git และลืมที่จะเปลี่ยนfetch = +refs/heads/*:refs/remotes/origin/*ไลน์เพื่อให้ตรงกับชื่อรีโมตใหม่ ฮ่า ๆ. บางทีนี่อาจจะเกิดขึ้นกับ makandra? เพราะหลังจากแก้ไขแล้วการเช็คเอาท์สาขาได้รับมาจากแหล่งกำเนิดอีกครั้งแม้ว่าฉันจะมีรีโมตมากมาย
Michael Johnston

91

หากคุณลบสาขาด้วยgit branch -D yourbranchnameและดึง / โคลนอีกครั้ง repo ของคุณคุณอาจต้องสร้างสาขาท้องถิ่นของคุณอีกครั้ง

ลอง:

git checkout -b yourbranchname

ตัวเลือกนี้ใช้งานได้แม้ในกรณีที่ไฟล์มีการเปลี่ยนแปลงอยู่แล้วและคุณต้องการที่จะส่งไปยังสาขาที่สร้างขึ้นใหม่
Nerius Jok

นี่เป็นความคิดเห็นที่มีประโยชน์เพราะในขณะที่ฉันแชร์ปัญหา / คำถามเดียวกันกับ OP ที่นี่คำตอบที่ให้ถือว่าเป็นสถานการณ์ที่ไม่ซับซ้อน น่าเสียดายที่ในสถานการณ์ของฉันฉันได้สร้างเฉพาะสาขาในท้องถิ่นก่อนหน้านี้จากนั้นลบมันตามที่ระบุไว้ที่นี่โดย @Francisco Alvarez ดังนั้นไม่ว่าฉันจะลองวิธีแก้ไขปัญหาอื่นที่นี่ฉันไม่สามารถดึงสาขาระยะไกลใหม่ได้ คำตอบนี้ช่วยเบคอนของฉัน
เดวิด

61

ฉันมีคำถามเดียวกันและได้รับข้อมูลจากลิงค์นี้: ดึงข้อมูลคอมไพล์ไม่สามารถดึงข้อมูลได้ทุกสาขา

ดังนั้นตอนนี้ฉันอาจไม่แน่ใจว่าสถานการณ์นี้เกิดขึ้นอย่างน้อยเราสามารถแก้ไขได้:

ขั้นตอนที่ 1ตรวจสอบการตั้งค่า "remote.origin.fetch" ของคุณควรเป็นเช่นนี้

$ git config - รับ remote.origin.fetch

+ refs / หัว / private_dev_branch: refs / รีโมท / กำเนิด / private_dev_branch

ขั้นตอนที่ 2เปลี่ยน "remote.origin.fetch" เพื่อดึงทุกอย่าง

$ git config remote.origin.fetch "+ refs / heads / *: refs / remotes / origin / *"

$ git config - รับ remote.origin.fetch

+ refs / หัว / *: refs / รีโมท / กำเนิด / *

จากนั้นคุณสามารถลอง "git pull" (อาจเป็น "git fetch origin" ก็ได้ แต่ฉันไม่ได้ลอง) เพื่อให้ได้สาขาทั้งหมด


@onionjake ถูกต้องขออภัยที่ฉันไม่ได้ตรวจสอบคำถามในทุกรายละเอียด ฉันเพิ่งได้รับข้อความแสดงข้อผิดพลาดเดียวกันในขณะที่พยายามดำเนินการแบบเดียวกันกับ "git checkout <existed_branch>" แต่แตกต่างจากปัญหาของผู้ส่งจริง ----- ผู้ริเริ่มสามารถเห็นสาขาในขณะที่ฉันไม่สามารถทำได้ คำตอบของฉันอาจแก้ปัญหาสำหรับผู้ที่ไม่ได้ดึงสาขาทั้งหมดล่วงหน้า แต่ไม่ใช่สถานการณ์สำหรับปัญหาของผู้ริเริ่ม
bearzyj

3
หลายคนรวมถึงฉันได้รับข้อผิดพลาดนี้เนื่องจากพวกเขาสามารถโคลน repo ด้วย - ธงชาติดังนั้นแม้หลังจากเรียก git พวกเขาจะไม่ได้รับสาขาอื่นและไม่สามารถชำระเงินจากระยะไกล วิธีนี้แก้ไขปัญหานี้ ขอบคุณ!
Orif Khodjaev

ขอบคุณมาก. ฉันใช้ภาพนักเทียบเทนเทลโฟลว์ของเทนเดอร์โฟลว์และมัน จำกัด สาขาไว้สำหรับบางเวอร์ชั่น หลังจากตั้งค่าการดึงข้อมูลตอนนี้ฉันสามารถชำระเงินได้
Michael_Zhang

24

ผู้ใช้ Windows ของ Git ระวัง - โดยไม่มีการตั้งค่า--icase-pathspecsหรือGIT_ICASE_PATHSPECS = 1 env var git pathspecs นั้นจะคำนึงถึงขนาดตัวพิมพ์

git checkout origin/FooBranch "Some/Path/To/File.txt"

ไม่เหมือนกัน

git checkout origin/FooBranch "some/path/to/file.Txt"

1
สิ่งหนึ่งที่ควรทราบที่ไม่ชัดเจนจากเอกสารประกอบคือ--icase-pathspecsพารามิเตอร์ต้องมาก่อนหรืออย่างน้อยก็ก่อน-C <path>
sonyisda1

21

หากชื่อสาขาและคุณไม่มีไฟล์ที่ไม่มีข้อผูกมัดลองสิ่งนี้

git fetch && git checkout <branch name>

ดูเหมือนจะไม่เกี่ยวข้องกับคำถามเลยใช่ไหม
onionjake

ฉันได้รับปัญหาเดียวกันที่กล่าวถึงข้างต้นแก้ไขโดยใช้คำสั่งต่อไปนี้
Sajin M Aboobakkar

19

ฉันประสบปัญหาขณะสลับสาขา

ฉันดึงคอมไพล์ในสาขาปัจจุบันแล้วลองเช็คเอาต์สาขาใหม่และใช้งานได้

git pull // on your old branch git checkout <new_branch>


มีประโยชน์จริงๆ :)
vikifor

ทำไมถึงใช้งานได้? ไม่git pullทำมากกว่าดึงสาขาปัจจุบันหรือไม่?
Cameron Hudson

นี่อาจเป็นกรณีที่คุณพยายามดึงจากสาขาที่สร้างโดยคนอื่นและยังไม่ได้ดึงใน repo ปัจจุบันของคุณ
Ankit Marothi


13

ฉันมีปัญหาเดียวกันเพราะผมใช้ซึ่งหมายถึงgit clone --depth=1--single-branch

ทำเสร็จแล้วgit cloneจะแก้ไขมัน


ขอบคุณที่ชี้นำ มันเป็นปัญหาเดียวกันกับที่ฉันเผชิญอยู่ ขอบคุณ
Mukesh Kumar

ไม่จำเป็นต้องทำการโคลนแบบสมบูรณ์ ถ้าสาขาอื่นถูกสร้างขึ้นโดยคนอื่นหลังจากที่คุณโคลน repo เดิมคุณจะได้รับข้อผิดพลาดนี้เนื่องจาก repo ในพื้นที่ของคุณไม่มีข้อมูลใด ๆ เกี่ยวกับสาขาใหม่นี้ เพียงสลับไปที่ต้นแบบและทำ git pull จากนั้นลองชำระเงินสาขาใหม่
สินธุ์

12

ฉันได้สิ่งนี้เมื่อฉันทำสิ่งต่อไปนี้:

  • ใช้ IntelliJ IDE เชื่อมต่อกับคอมไพล์แล้ว
  • สร้างไฟล์ใหม่และเพิ่มใน git
  • เปลี่ยนชื่อไฟล์ใหม่

เมื่อฉันพยายามตรวจสอบในไดเรกทอรีฉันได้รับข้อผิดพลาดนี้

เพื่อแก้ไข:

ฉันเปิด repo ในส่วนขยาย git ฉันเห็นว่าไฟล์ (ที่มีชื่อเก่า) เป็นฉาก แต่เนื่องจากมันไม่ได้มีอยู่อีกต่อไปจึงไม่สามารถกระทำได้

ฉันแค่ unstaged ไฟล์นี้

จากนั้นฉันจะเพิ่มไฟล์อีกครั้ง (ชื่อนี้อย่างถูกต้องในเวลานี้) เป็นคอมไพล์และกระทำโดยไม่มีข้อผิดพลาด


สิ่งที่ตลกคือมันยังคงใช้งานได้กับ TortoiseGit แม้ว่าจะไม่ได้อยู่ใน Intellij
Marian Klühspies

3
สิ่งนี้ช่วยฉันได้มาก ฉันใช้ SourceTree เพื่อค้นหา f * ck r ของไฟล์และไม่จัดทำมัน
Vinchenzo

10

ฉันมีปัญหานี้วันนี้ฉันพยายามgit checkout fooและได้error: pathspec 'foo' did not match any file(s) known to git.

มันจะเปิดออกผมอยู่ใน repo ดังนั้นบทเรียนเรียนรู้: ตรวจสอบ repo ที่คุณกำลังดูก่อนที่จะออกนอกลู่นอกทาง


ฮา - ใช่นี่คือฉัน - สร้างสาขาใน Bitbucket จากตั๋ว Jira ไม่ได้สังเกตว่ามันสร้างขึ้นใน repo สุ่มบางอย่าง
Keir

sidenote: ฉันทำงานกับรีโมทหลายอัน, มีหนึ่งชุดที่เหมาะสมและอีกอันชี้ไปที่ repo ที่ไม่ถูกต้อง sooo ขอบคุณสำหรับการเตือนความจำฉันสามารถเห็นปัญหาของฉันได้อย่างง่ายดายเมื่อฉันทำคอมไพล์รีโมต -v
Dreamling

9

ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามชำระเงินผ่านสาขา:

git checkout branchX

ซึ่งฉันไม่ได้เช็คเอาท์ก่อน มันจะทำงานเมื่อระบุระยะไกลอย่างชัดเจน:

git checkout --track origin/branchX

เหตุผลสำหรับสิ่งนี้คือฉันมีการกำหนดค่ารีโมต 2 รายการ (Origin + sth. else) ใน git config เนื่องจากฉันไม่ต้องการรีโมตที่สองฉันจึงลบออกและทำให้ทำงานได้ ทางเลือกในการตั้งค่ารีโมตเริ่มต้นผ่าน:

checkout.defaultRemote=origin

ไม่ได้ผลสำหรับฉัน


ฉันเพิ่มคำตอบนี้เพราะคำตอบที่แนะนำอื่น ๆ ทั้งหมดไม่ได้ผลสำหรับฉันดังนั้นฉันหวังว่าสิ่งนี้จะช่วยคนที่มีสาเหตุเดียวกัน (2 รีโมต)
RS1980

8

ขั้นแรกให้เช็คเอาท์สาขาหลักจากนั้นพิมพ์

git fetch --all --prune 
git checkout <your branch>

หวังว่ามันจะช่วย!


8

ฉันแก้ไขโดยการแก้ไขไฟล์ git config ตรวจสอบไฟล์ config ในไดเรกทอรี git ของคุณ - .git\config

มันเคยมี

[remote "origin"]
url = http://git.xyz.com/abc-group/pqr.git
fetch = +refs/heads/develop:refs/remotes/origin/develop

ฉันแก้ไขโดยการแก้ไขเป็น

[remote "origin"]
url = http://git.xyz.com/abc-group/pqr.git
fetch = +refs/heads/*:refs/remotes/origin/*

สังเกตว่าหัวหน้าชี้ไปที่สาขาเดียวเท่านั้นดังนั้นมันจึงไม่พบการอ้างอิงไปยังสาขาอื่นที่มีอยู่ฉันเปลี่ยนมันเป็น * ดังนั้นมันจึงตรวจสอบทุกอย่างที่มา


ขอบคุณเพื่อนความพยายามหลายชั่วโมงและในที่สุดฉันก็ถึงที่ทางออกของคุณ
นิล Lulla

7

บน Windows OS โดยค่าเริ่มต้นคอมไพล์ถูกติดตั้งด้วย

core.ignorecase = true

ซึ่งหมายความว่าไฟล์ repo git จะไม่ตรงตามตัวพิมพ์เล็ก - ใหญ่เพื่อเปลี่ยนสิ่งนี้คุณต้องดำเนินการ:

\yourLocalRepo> git config core.ignorecase false

คุณสามารถค้นหาการกำหนดค่านี้ได้ที่ไฟล์. git \ config


7

ฉันคัดลอกที่มาระยะไกลurlจาก.git/configไฟล์อื่นทำ.git/configไฟล์ใหม่ของฉันหายไปบรรทัดต่อไปนี้ใน[remote "origin"]ส่วน

fetch = +refs/heads/*:refs/remotes/origin/*

แก้ไขการเพิ่มบรรทัดข้างต้น error: pathspec 'master' did not match any file(s) known to git.


6

ฉันมีปัญหาเดียวกัน .. ฉันคิดว่าฉันมีสาขาชื่อfooเมื่อฉันพยายามที่จะ:

git checkout foo

ฉันได้รับ:

error: pathspec 'foo' did not match any file(s) known to git.

จากนั้นฉันลองใช้ชื่อสาขาเต็ม:

git checkout feature/foo

จากนั้นทำงานให้ฉัน


5

หากเกิดขึ้นบน Windows อาจเป็นกรณีของชื่อไฟล์

ฉันมีข้อผิดพลาดในวันนี้ - ฉันได้สร้างไฟล์ใหม่เพิ่มไปยัง GIT แล้วฉันเปลี่ยนอักษรหนึ่งตัวในชื่อไฟล์จากล่างเป็นบนและจากนั้นฉันไม่สามารถทำอะไรได้เลย - ยอมรับเปลี่ยนกลับลบไฟล์จาก repo

วิธีแก้ปัญหาเดียวที่ฉันพบคือเปลี่ยนชื่อไฟล์อีกครั้งกลับไปเป็นกรณีเดียวกันเมื่อฉันเพิ่มไฟล์นี้ใน GIT จากนั้นให้ GIT ย้อนกลับเพื่อลบไฟล์นี้ออกจาก GIT จากนั้นเปลี่ยนชื่อไฟล์อีกครั้งตามที่ต้องการ หลังจากการเปลี่ยนแปลงเหล่านั้นฉันสามารถกระทำเพื่อ repo แล้วกดไม่มีปัญหาใด ๆ


นี้จะช่วย git mvแต่มันควรจะกล่าวถึงการเปลี่ยนชื่อจะทำผ่านทาง เดาว่าคุณทำได้ด้วยวิธีนี้เพราะการทำผ่าน IDE (IntelliJ PhpStorm) ของฉันล้มเหลวสำหรับฉัน ...
Dennis98

5

ในกรณีของฉันฉันมีสองสาขา 1) ต้นแบบ (ซึ่งสำหรับเซิร์ฟเวอร์สด) 2) dev (เซิร์ฟเวอร์ทดสอบ) ฉันตั้งค่ารีโมทหลายตัวเพื่อส่งรหัสบนเซิร์ฟเวอร์ตามลำดับ เมื่อฉันพยายามที่จะเปลี่ยนสาขาฉันได้รับข้อผิดพลาดเช่นerror: pathspec 'master' did not match any file(s) known to git.

git remote -vคุณสามารถดูได้จาก ฉันลบรีโมตอื่นออกยกเว้นoriginรีโมตแล้วgit remote remove <remote-name>

แล้วก็ git fetch

ตอนนี้ฉันสามารถเช็คเอาท์สาขาgit checkout <branch-name>ได้


5

ฉันพบปัญหาเดียวกันนี้เมื่อฉันเล่นรอบแรกกับคอมไพล์ เมื่อพยายามส่งมอบครั้งแรกของฉัน ...

git commit -m 'first commit!'

ฉันได้รับข้อผิดพลาดจาก OP ...

error: pathspec 'commit!'' did not match any file(s) known to git.

ฉันคิดว่าฉันอาจสับสนในเรื่องคอมไพล์โดยใช้คำสำคัญในข้อความยืนยันดังนั้นฉันลองคำอื่น ๆ สองสามคำ

ในที่สุดฉันก็ใช้เครื่องหมายคำพูดคู่ในข้อความ ...

git commit -m "first commit!"

สิ่งนี้กลายเป็นความสำเร็จ ...

[master (root commit) 0000000] first commit!
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dummyDoc.txt

5

ฉันทำผิดพลาดโดยไม่ให้ค่าสถานะ -m ในขณะที่ส่งมอบ (เกิดขึ้นฮ่า ๆ )

git commit -m "commit message in here"

สถานการณ์เดียวกันที่นี่ เพียงลืม "-m" รับข้อความแสดงข้อผิดพลาดเดียวกัน
Niuya

5

ฉันมีสาเหตุที่แตกต่าง

ฉันมีสคริปต์ที่โดยทั่วไปแล้วค้นหาสาขาทั้งหมดที่ตรงกับปัญหาของจิราในคำว่า "PRJ-1234" ในบรรดาสาขาทั้งหมดเพื่อรันคำสั่งเช็คเอาต์สาขา git บนสาขาที่ตรงกัน

ปัญหาในกรณีของฉันคือ 2 สาขาหรือมากกว่านั้นใช้รหัส jira เดียวกันร่วมกันและทำให้สคริปต์ของฉันล้มเหลวด้วยข้อผิดพลาดดังกล่าว

ด้วยการลบสาขาเก่าที่ไม่ได้ใช้และทำให้แน่ใจว่ามีเพียงสาขาเดียวเท่านั้นที่มีการอ้างอิงคีย์ jira เพื่อแก้ไขปัญหา

นี่คือรหัสของฉันในกรณีที่มีคนต้องการใช้

git remote update
git fetch --all --prune 
git branch -r --list *$1* | xargs git checkout --force

บันทึกสิ่งนี้เป็น switchbranch.sh

จากนั้นใช้จากเครื่อง ./switchbranch.sh PRJ-1234


สำหรับฉันมันเป็นเส้นทาง / ชื่ออัปสตรีมที่ถูกต้องและรวมถึงการดึงแท็กระยะไกลทั้งหมดด้วยเช่นกัน "git fetch - all --tags --prune" ค้นหาชื่อที่ถูกต้อง: "git branch -a | grep some_upstream" ก่อนที่จะตรวจสอบกับเส้นทางเต็มว่า "git checkout -f --track -b new_branch remotes / upstream / some_upstream_branch"
kisna

4

ไม่มีคำตอบเหล่านี้แก้ปัญหาของฉัน:

Nikolai@CALIGARI-7 ~/Documents/NetBeansProjects/Version (master)
$ git log --format=oneline
b9cc6a9078312865280fb5432a43e17eff03a5c6 Formatted README
288772f36befe6bd60dd41b8185f1e24e0119668 Updated README documentation
d2bdbe18f4169358d46fad50eacfb89786df3bf8 Version object v3.0.0-SNAPSHOT
a46b1910a3f548b4fa254a6055d25f68d3f217dd VersionFactory is now Platform agnostic
24179ae569ec7bd28311389c0a7a85ea7b4f9594 Added internal.Platform abstraction
252b684417cf4edd71aed43a15da2c8a59c629a7 Added IPlugin implementation for Sponge
e3f8d21d6cf61ee4fc806791689c984c149b45e3 Added IPlugin implementation for Bukkit
aeb403914310b4b10dee9e980cf64472e2bfda79 Refactored Version.java
ef50efcff700c6438d57f70fac30846de2747a7e Refactored TesterFactory
a20808065878d4d28657ae362235c837cfa8e625 Added IPlugin abstraction
9712a3575a70060d7ecea8b62bb5e888fdc32d07 Heavily refactored Tester
02d025788ae740dbfe3ef76a132cea8ca4e47467 Added generic Predicate<T> interface
9c565777abea9be6767dfdab4ab94ed1173750dd Minor refactoring of testCompareTo()
2ff2a28c221681e256dcff28770782736d3a796a Version object v2.0.1
d4b2e2bd830f77cdbc2297112c2e46b6555d4393 Fix compareTo()
05fe7e012b07d1a5b8de29804f96d9a6b24229a1 Make compareTo() fail
6e85371414357a41c1fc0cec0e75adba92f96832 Fix VersionFactory passing null
c1fd1f032f87d860d5ed9d6f6679c9fa522cff8d Version object v2.0
62c3a92c008a2ed11f0a4d016080afc3541d0700 Version object v1.2
c42e9e617128085e872c51b4d977a04e48d69e8f Deprecated, doc'd, future-proofed getNm


Nikolai@CALIGARI-7 ~/Documents/NetBeansProjects/Version (master)
$ git checkout 3a796a
error: pathspec '3a796a' did not match any file(s) known to git.

Version object v2.0.1ผมพยายามที่จะกลับไปและสร้างกระทำสำหรับ โชคดีที่ฉันมีความคิดที่จะลองใช้รหัสแฮชทั้งหมดและใช้งานได้! ซึ่งหมายความว่าฉันใช้รหัสแฮชผิดที่ผิด

Nikolai@CALIGARI-7 ~/Documents/NetBeansProjects/Version (master)
$ git checkout 2ff2a
Note: checking out '2ff2a'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 2ff2a28... Version object v2.0.1

Nikolai@CALIGARI-7 ~/Documents/NetBeansProjects/Version ((2ff2a28...))
$

ตามที่แสดงข้างต้นสำหรับรหัสแฮชบางส่วนคุณต้องระบุส่วนหน้าไม่ใช่ส่วนหลัง


4

เกิดขึ้นกับฉันหลังจากเปลี่ยนชื่อไฟล์ที่ไม่มีข้อผูกมัดใน Android Studio

Git ดูเหมือนจะมีเวอร์ชั่นเก่าในที่เก็บแม้ว่ามันจะไม่ได้มีอยู่อีกต่อไป

fetch, pull, checkout, add all and so on did not help in my case!

ดังนั้นฉันจึงเปิด Git GUI ของ TortoiseGit ซึ่งแสดงไฟล์ที่แน่นอนที่ทำให้เกิดปัญหา

หลังจากนั้นฉันลบไฟล์ออกจากที่เก็บด้วย

git rm -r --cached /path/to/affected/file

และปัญหาก็หมดไป


3

ในกรณีของฉันฉันได้เปลี่ยนชื่อไฟล์ที่เปลี่ยนกรณีของไฟล์เช่น SomeFile.js -> someFile.js

ฉันคิดว่านั่นเกี่ยวข้องกับปัญหา การดึงข้อมูลคอมไพล์ไม่สามารถแก้ไขปัญหาได้

ฉันย้ายไฟล์ออกจากโปรเจ็กต์ของฉันดึงและไม่ใช้มัน จากนั้นฉันก็ดึงข้อมูลกลับมาเพิ่มอีกครั้งแล้วก็ผลักและก็ใช้งานได้ ฉันไม่รู้ว่าจำเป็นต้องใช้ทุกขั้นตอนเหล่านี้หรือไม่ แต่ท้ายที่สุดก็ใช้งานได้


ผลักดันโดยไม่ต้องเปลี่ยนชื่อไฟล์และแฟ้มออกเพิ่มคอมไพล์หลังจากนั้นมันสำหรับฉัน
phil294

3

ในกรณีของฉันฉันเข้าสู่ไดเรกทอรี submodule โดยไม่ต้องทำ

  • git submodule init
  • git submodule update

คอมไพล์จึงเชื่อมโยงไปยังโฟลเดอร์พาเรนต์ซึ่งพลาดสาขาไปอย่างแน่นอน


3

ตรวจสอบว่าไม่ใช่การพิมพ์ผิดในชื่อไฟล์เป้าหมาย ฉันพยายามแสดงบนเวทีโดยการพิมพ์

git add includes/connection..php

แต่ฉันไม่ได้สังเกตว่าฉันใช้สองจุด แต่ฉันพิมพ์แล้ว

git add includes/connection.php

มันได้ผล


2

สำหรับฉันมันเป็นปัญหากับข้อมูลประจำตัวของฉัน


หลังจากลองคำตอบแล้วหนึ่งในนั้นก็ช่วยฉันแก้ปัญหา:

เล่นgit fetchโยนข้อผิดพลาดต่อไปนี้:

ไม่สามารถแก้ไขโฮสต์: bitbucket.org

สิ่งที่ฉันต้องทำคือบังคับให้ IDE (VS Code ในกรณีของฉัน) จำข้อมูลประจำตัวของฉัน:

git config --global credential.helper wincred

Git ซิงก์การเปลี่ยนแปลงทั้งหมดทันทีและgit checkout <branche>ทำงานได้ดีทันที!


1

ฉันได้รับเหมือนกันpathspec errorใน git-bash ฉันใช้คอมไพล์ Tortoise บน windows เพื่อสลับ / เช็คเอาต์สาขา

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