Git: không thể kiểm tra nhánh - lỗi: pathspec '' 'không khớp với bất kỳ (các) tệp nào được biết đến với git


706

Tôi không chắc tại sao tôi không thể kiểm tra một chi nhánh mà tôi đã làm việc trước đó. Xem các lệnh bên dưới (lưu ý: colà bí danh cho 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.

Tôi không chắc nó có nghĩa gì và dường như tôi không thể tìm thấy bất cứ điều gì tôi có thể hiểu trên Google.

Làm thế nào để tôi kiểm tra chi nhánh đó, và tôi có thể làm gì để phá vỡ điều này?

CẬP NHẬT :

Tôi tìm thấy bài đăng này , và chạy git show-refcho tôi:

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

CẬP NHẬT trên .gitthư mục ( user_controlled_site_layoutsnằm trong 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

Cập nhật lên 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"

Điều này có thể giúp gì không? stackoverflow.com/questions/2527355/
trộm

Nó có hoạt động nếu bạn làm : git checkout refs/heads/user_controlled_site_layouts?
Đánh dấu Longair

2
Đánh dấu - không, vẫn nhận được lỗi tương tự.
Ramon Tayag

1
Xem cập nhật của bạn, tôi không chắc chắn làm thế nào bạn có một chi nhánh xuất hiện git branch -anhưng không có trong git show-ref. Liệu các tập tin .git/refs/heads/feature/user_controlled_site_layoutthực sự tồn tại? Nếu vậy, những gì không cat .git/refs/heads/feature/user_controlled_site_layoutcho?
Đánh dấu Longair

1
Tôi đã gặp lỗi tương tự, tôi đã tạo chi nhánh từ một repo khác và cố gắng kiểm tra chi nhánh đó sang một repo khác. Vì vậy, tôi đã nhận nó vì các repos khác nhau.
Kushan Gunasekera

Câu trả lời:


947

Hãy thử git fetchđể kho lưu trữ cục bộ của bạn nhận được tất cả thông tin mới từ github. Nó chỉ lấy thông tin về các chi nhánh mới và không có mã thực tế. Sau đó git checkoutnên hoạt động tốt.


19
Để làm rõ hơn, git fetchrất hữu ích khi bạn cần đồng bộ hóa kho lưu trữ cục bộ của mình với kho lưu trữ từ xa, nhưng bạn không muốn hợp nhất các thay đổi vào thư mục làm việc của mình.
Đánh dấu Lakata

138
Trong trường hợp một bản sao với nhiều điều khiển từ xa, git checkout Branchnó không hoạt động. Với nhiều điều khiển từ xa, tên Chi nhánh không rõ ràng và yêu cầu thông số kỹ thuật từ xa / chi nhánh. Lệnh git checkout -b branch remote/branchhoạt động trong kịch bản đó.
Umair Ishaq

1
Tôi đã quản lý để tạo một "chủ" cục bộ bằng cách nào đó, vì vậy mặc dù "git fetch" đã giúp tôi gần hơn, tôi phải xóa chủ địa phương của mình trước ("git Branch -d master"), trước khi chuyển sang chủ từ xa ("git checkout bậc thầy"). Trong trường hợp đó giúp bất cứ ai khác là ngớ ngẩn như tôi!
Jamie Brown

1
@ Aleks không phải là câu trả lời được chấp nhận vì nó không liên quan gì đến câu hỏi của OP. Anh ta không còn có thể kiểm tra một chi nhánh mà trước đây anh ta đã kiểm tra (tức là được tạo ra) tại địa phương . Chỉ vì những người khác có vấn đề khác, cơ bản hơn nhiều đã tìm thấy & nâng cao câu trả lời này (điều này hoàn toàn tầm thường và nổi tiếng đối với bất kỳ người dùng git nào có kinh nghiệm hơn hai ngày) không có nghĩa là OP nên chấp nhận nó.
Michael Johnston

11
git fetchcó thể làm công việc Nhưng nó có thể không nhận được tất cả các chi nhánh từ xa. Bạn cần đặt mẫu tìm nạp. git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"tham khảo: stackoverflow.com/questions/11623862/
Mạnh

363

Tôi đã nhận được lỗi này khi tôi cố gắng kiểm tra chi nhánh mới:

lỗi: pathspec 'BRUC-NAME' không khớp với bất kỳ (các) tệp nào được biết đến với git.

Khi tôi cố gắng git checkout origin/<BRANCH-NAME>, tôi đã nhận được ĐẦU tách ra:

(tách ra từ nguồn gốc /)

Cuối cùng, tôi đã làm như sau để giải quyết vấn đề :

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

15
với lệnh "thanh toán" này, tôi có thông báo này: fatal: Không thể cập nhật đường dẫn và chuyển sang nhánh 'foo' cùng một lúc.
NEOline

1
Sau khi tự sửa đổi địa chỉ từ xa, tôi không thể kiểm tra các chi nhánh mới. "git cập nhật từ xa" dường như thực hiện các mẹo.
martin

không có "git remote update" thì nó không hoạt động. Cảm ơn!
Kristiyan Tsvetanov

git checkout --track origin/staging fatal: git checkout: --track and --no-track require -bphiên bản git 1.5.6.5
Ivan Borshchov

Được sử dụng tiếp theo thay vì lệnh thứ bagit checkout -b staging --track origin/staging
Ivan Borshchov

152

Tôi đã gặp lỗi này cho một chi nhánh ở xa và không có chi nhánh theo dõi cục bộ. Mặc dù tôi chắc chắn tôi đã kiểm tra các chi nhánh từ xa thông qua một cách đơn giản

git checkout feature/foo

trong quá khứ, để khắc phục lỗi này tôi đã phải

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

Tôi cũng không biết mình đã làm gì để rơi vào tình huống đó.


1
Thật không may, tôi đã không đẩy nó đến máy chủ git từ xa.
Ramon Tayag

Điều này làm việc cho tôi. Nó đã xảy ra trên git v 1.6 trên máy FC10.
FractalSpace

26
Git thường đoán chi nhánh từ xa để kiểm tra, nhưng khi sử dụng nhiều hơn một điều khiển từ xa, có vẻ như nó không còn có thể làm điều đó. Nguồn: makandracards.com/makandra/ trộm
Elijah Lynn

1
thực hiện tính năng kiểm tra git / foo thay vì chỉ kiểm tra git foo làm việc cho tôi
Alejandro Moreno

điều này bắt đầu xảy ra với tôi (trong một repo với nhiều điều khiển từ xa và hàng trăm chi nhánh mà tôi đã kiểm tra thành công các chi nhánh từ nguồn gốc trong 3 năm) và tôi đã bị thần bí. Khi kiểm tra, tôi phát hiện ra tôi đã thêm một điều khiển từ xa mới và tôi đã thực hiện nó bằng cách sao chép / dán vào trình soạn thảo văn bản thay vì sử dụng lệnh git và quên thay đổi fetch = +refs/heads/*:refs/remotes/origin/*dòng để khớp với tên từ xa mới. CƯỜI LỚN. Có lẽ điều này đã xảy ra với makandra? bởi vì sau khi sửa nó, kiểm tra chi nhánh một lần nữa lấy nó từ nguồn gốc, mặc dù tôi có nhiều điều khiển từ xa.
Michael Johnston

91

Nếu bạn đã xóa một nhánh với git branch -D yourbranchnamevà kéo / nhân bản lại repo của mình, bạn có thể cần phải tạo lại nhánh cục bộ của mình.

Thử:

git checkout -b yourbranchname

tùy chọn này luôn hoạt động, ngay cả khi các tệp đã được thay đổi và bạn muốn đẩy chúng sang nhánh mới được tạo.
Nerius Jok

Đây là một nhận xét hữu ích vì trong khi tôi chia sẻ cùng một vấn đề / câu hỏi như OP ở đây, các câu trả lời được cung cấp giả định là một tình huống đơn giản. Thật không may, trong tình huống của tôi, trước đây tôi đã tạo CHỈ một chi nhánh địa phương, sau đó xóa nó theo ghi chú ở đây bởi @Francisco Alvarez, vì vậy dù tôi đã thử các giải pháp khác ở đây như thế nào, tôi không thể kéo chi nhánh từ xa mới. Câu trả lời này đã cứu thịt xông khói của tôi.
David

61

Tôi có cùng câu hỏi và nhận được một số thông tin từ liên kết này: git fetch không tìm nạp tất cả các chi nhánh

Vì vậy, bây giờ, tôi có thể không chắc tình huống này đã xảy ra như thế nào, ít nhất là chúng ta có thể giải quyết nó:

Bước 1. Kiểm tra cài đặt "remote.origin.fetch" của bạn, sẽ như thế này

$ git config - quên remote.origin.fetch

+ refs / Heads / private_dev_branch: refs / điều khiển từ xa / origin / private_dev_branch

Bước 2. Thay đổi "remote.origin.fetch" để tìm nạp mọi thứ

$ git config remote.origin.fetch "+ refs / Heads / *: refs / điều khiển từ xa / origin / *"

$ git config - quên remote.origin.fetch

+ refs / Heads / *: refs / điều khiển từ xa / nguồn gốc / *

Sau đó, bạn có thể thử "git pull" (có thể "git fetch origin" cũng hoạt động nhưng tôi đã không thử) để có được tất cả các chi nhánh.


@onionjake đã đúng, xin lỗi vì tôi đã không kiểm tra các câu hỏi trong từng chi tiết. Chỉ là tôi đã nhận được các thông báo lỗi tương tự trong khi thử cùng một hành động "kiểm tra git <tồn tại_branch>", nhưng khác với vấn đề của người khởi tạo thực sự ----- người khởi tạo có thể thấy chi nhánh trong khi tôi không thể. Câu trả lời của tôi có thể giải quyết vấn đề cho những người không lấy tất cả các chi nhánh nâng cao. Nhưng không phải là tình huống cho vấn đề của người khởi tạo.
bearzyj

3
Nhiều người trong đó có tôi nhận được lỗi này, vì họ có thể sao chép một repo với cờ --branch, do đó, ngay cả sau khi git tìm nạp, họ không nhận được các nhánh khác và không thể kiểm tra bất cứ điều gì từ xa. Điều này khắc phục vấn đề này. Cảm ơn!
Orif Khodjaev

Cảm ơn rât nhiều. Tôi đã sử dụng hình ảnh docker phát của tenorflow và nó giới hạn nhánh ở phiên bản nhất định. Sau khi thiết lập tìm nạp cấu hình, bây giờ tôi có thể kiểm tra.
Michael_Zhang

24

Người dùng Git Windows hãy cẩn thận - không có cài đặt var--icase-pathspecs hoặc GIT_ICASE_PATHSPECS = 1 env , các gsp pathspec sẽ phân biệt chữ hoa chữ thường, trong trường hợp này

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

không giống như

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

1
Một điều cần lưu ý là không rõ ràng từ tài liệu là --icase-pathspecstham số cần phải đến trước hoặc ít nhất là trước-C <path>
sonyisda1

21

Nếu tên chi nhánh và bạn không có bất kỳ tập tin nào, hãy thử nó

git fetch && git checkout <branch name>

Điều này dường như không liên quan đến câu hỏi?
tây

Tôi gặp vấn đề tương tự được đề cập ở trên, được giải quyết bằng các lệnh sau
Sajin M Aboobakkar

19

Tôi phải đối mặt với vấn đề trong khi chuyển đổi chi nhánh của tôi.

Tôi đã thực hiện một thao tác git trên nhánh hiện tại và sau đó thử kiểm tra cái mới và nó đã hoạt động

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


Thực sự hữu ích :)
vikifor

Tại sao điều này sẽ làm việc? Có git pulllàm nhiều hơn kéo chi nhánh hiện tại?
Cameron Hudson

Đây có thể chỉ là một trường hợp mà bạn đang cố gắng kéo từ một nhánh do người khác tạo ra và điều đó chưa được kéo lại trong repo hiện tại của bạn.
Ankit Marothi

15
git pull

Điều đó chỉ đơn giản là sửa nó cho tôi :)


13

Tôi đã có cùng một vấn đề bởi vì tôi đã sử dụng git clone --depth=1, ngụ ý --single-branch.

Làm một hoàn thành git clonesẽ sửa chữa nó.


Cảm ơn đã chỉ ra điều đó. Nó chính xác là cùng một vấn đề tôi đã phải đối mặt. Cảm ơn
Mukesh Kumar

Một bản sao hoàn chỉnh có thể không được yêu cầu. Nếu chi nhánh được tạo bởi người khác SAU KHI ban đầu bạn đã sao chép repo, bạn sẽ gặp lỗi này vì repo cục bộ của bạn không có bất kỳ thông tin nào về chi nhánh mới này. Chỉ cần chuyển sang chủ và làm một git kéo. Sau đó cố gắng kiểm tra chi nhánh mới.
Yasin

12

Tôi đã nhận được điều này khi tôi làm như sau:

  • IntelliJ IDE đã sử dụng, kết nối với git
  • Tạo một tệp mới và thêm vào git
  • Đổi tên tập tin mới

Khi tôi cố kiểm tra trong thư mục, tôi đã gặp lỗi này.

Sửa chữa:

Tôi đã mở repo trong phần mở rộng git. Tôi thấy rằng tập tin (với tên cũ) đã được dàn dựng. Nhưng vì nó không tồn tại nữa, nó không thể được cam kết.

Tôi chỉ đơn giản là không tập tin này.

Sau đó, tôi đã thêm lại tệp (lần này được đặt tên chính xác) vào git và cam kết không có lỗi.


Điều thú vị là, nó vẫn hoạt động với TortoiseGit ngay cả khi nó không ở trong intellij
Marian Klühspies

3
Điều này đã giúp tôi rất nhiều. Tôi đã sử dụng SourceTree để tìm thấy rằng f * ck r của một tệp và chưa được xử lý nó.
Vinchenzo

10

Tôi đã có vấn đề này ngày hôm nay tôi đã cố gắng để git checkout foocó đượcerror: pathspec 'foo' did not match any file(s) known to git.

Hóa ra tôi đã ở trong repo sai . Vì vậy, bài học kinh nghiệm: kiểm tra xem repo nào bạn đang xem trước khi hoảng sợ.


Ha - vâng, đây là tôi - chi nhánh được tạo ra trong Bitbucket từ vé Jira, không nhận thấy nó đã tạo ra nó trong một số repo ngẫu nhiên
Keir

sidenote: Tôi đã làm việc với nhiều điều khiển từ xa, có một bộ đúng và bộ kia chỉ vào repo sai. thật tuyệt cảm ơn vì đã nhắc nhở, tôi có thể dễ dàng nhìn thấy vấn đề của mình khi tôi thực hiện một điều khiển từ xa -v
Dreamling

9

Tôi đã gặp lỗi này khi cố gắng kiểm tra một chi nhánh thông qua:

git checkout branchX

mà tôi đã không kiểm tra trước đây. Nó chỉ hoạt động khi nói rõ điều khiển từ xa:

git checkout --track origin/branchX

Lý do cho điều này là, tôi có 2 điều khiển từ xa khác nhau (origin + sth. Other) được cấu hình trong git config. Khi tôi không cần điều khiển từ xa thứ hai, tôi đã gỡ bỏ nó và voilá, nó hoạt động. Cách khác để đặt điều khiển từ xa mặc định thông qua:

checkout.defaultRemote=origin

không làm việc cho tôi


Tôi đã thêm câu trả lời này vì tất cả các câu trả lời được đề xuất khác không phù hợp với tôi, vì vậy tôi hy vọng điều này sẽ giúp được ai đó có cùng nguyên nhân (2 điều khiển từ xa).
RS1980

8

Đầu tiên, kiểm tra nhánh cha mẹ. Sau đó gõ

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

Hy vọng nó giúp!.


8

Tôi đã sửa nó bằng cách sửa đổi tệp cấu hình git của tôi Kiểm tra tệp cấu hình của bạn trong thư mục git của bạn - .git\config

Nó trước đây đã có

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

Tôi đã sửa bằng cách sửa đổi nó thành

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

Lưu ý rằng cái đầu chỉ vào một nhánh, vì vậy nó không thể tìm thấy tham chiếu đến các nhánh khác hiện có, tôi đổi nó thành * để nó kiểm tra mọi thứ trong nguồn gốc.


Cảm ơn, bạn thân, hàng giờ nỗ lực và cuối cùng tôi đã hạ cánh với giải pháp của bạn.
Sunil Lulla

7

Trên hệ điều hành Windows theo mặc định, git được cài đặt sẵn

core.ignorecase = true

Điều này có nghĩa là các tệp git repo sẽ không phân biệt chữ hoa chữ thường, để thay đổi điều này bạn cần thực thi:

\yourLocalRepo> git config core.ignorecase false

bạn có thể tìm thấy cấu hình này trên tập tin .git \ config


7

Tôi đã sao chép nguồn gốc từ xa urltừ một .git/configtệp khác , làm như vậy .git/configtệp mới của tôi bị thiếu dòng sau trong [remote "origin"]phần

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

Đã thêm dòng trên error: pathspec 'master' did not match any file(s) known to git.


6

Tôi có cùng một vấn đề .. Tôi nghĩ rằng tôi có chi nhánh được đặt tên fookhi tôi cố gắng:

git checkout foo

Tôi đã nhận được:

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

Sau đó, tôi đã thử tên chi nhánh đầy đủ:

git checkout feature/foo

sau đó làm việc cho tôi


5

Nếu nó xảy ra trên Windows, nó có thể là vấn đề trường hợp tên tệp.

Tôi đã gặp lỗi này ngày hôm nay - Tôi đã tạo tệp mới, được thêm vào GIT, sau đó tôi đã thay đổi một chữ cái trong tên tệp từ dưới lên trên và sau đó tôi không thể thành bất cứ điều gì - cam kết, hoàn nguyên, xóa tệp khỏi repo.

Giải pháp duy nhất tôi tìm thấy là thay đổi tên tệp một lần nữa thành trường hợp chính xác khi tôi thêm tệp này vào GIT, sau đó thực hiện hoàn nguyên GIT để xóa tệp này khỏi GIT, sau đó thay đổi tên tệp một lần nữa theo ý muốn. Sau những thay đổi đó, tôi có thể cam kết repo và sau đó đẩy mà không gặp vấn đề gì.


Điều này đã giúp, nhưng nó nên được đề cập để thực hiện đổi tên thông qua git mv. Đoán rằng bạn đã làm theo cách này, bởi vì thực hiện nó thông qua IDE của tôi (IntelliJ PhpStorm) đã thất bại đối với tôi ...
Dennis98

5

Trong trường hợp của tôi, tôi có TWO nhánh 1) master (dành cho máy chủ trực tiếp) 2) dev (máy chủ thử nghiệm). Tôi đã thiết lập nhiều điều khiển từ xa để đẩy mã trên máy chủ tương ứng. Khi tôi cố gắng chuyển chi nhánh, tôi đã gặp lỗi nhưerror: pathspec 'master' did not match any file(s) known to git.

Bạn có thể nhìn thấy chúng bằng cách git remote -v. Tôi đã loại bỏ điều khiển từ xa khác ngoại trừ originđiều khiển từ xagit remote remove <remote-name>

Sau đó git fetch

Bây giờ tôi có thể kiểm tra chi nhánh bằng cách git checkout <branch-name>.


5

Tôi đã gặp vấn đề tương tự khi lần đầu tiên chơi xung quanh với git. Khi thử cam kết đầu tiên của tôi ...

git commit -m 'first commit!'

Tôi đã nhận được lỗi được đề cập bởi OP ...

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

Tôi nghĩ rằng tôi có thể đã nhầm lẫn git bằng cách sử dụng một từ khóa trong thông điệp cam kết, vì vậy tôi đã thử một vài từ khác và nhận được lỗi tương tự.

Cuối cùng tôi đã sử dụng dấu ngoặc kép trong tin nhắn ...

git commit -m "first commit!"

Điều này hóa ra là thành công ...

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

5

Tôi đã phạm một lỗi ngớ ngẩn khi không cung cấp cờ -m trong khi cam kết (lol xảy ra)

git commit -m "commit message in here"

tình hình tương tự ở đây. chỉ cần quên "-m" nhận thông báo lỗi tương tự.
Niuya

5

Tôi có một nguyên nhân gốc rễ khác

Tôi đã có một đoạn script về cơ bản tìm kiếm tất cả các nhánh khớp với khóa vấn đề jira trong "PRJ-1234" trong số tất cả các nhánh để thực hiện lệnh kiểm tra nhánh git trên nhánh phù hợp

Vấn đề trong trường hợp của tôi là 2 hoặc nhiều nhánh chia sẻ cùng một khóa jira và do đó khiến tập lệnh của tôi bị lỗi với lỗi đã nói ở trên

Bằng cách xóa nhánh không sử dụng cũ và đảm bảo chỉ một nhánh duy nhất có tham chiếu khóa jira đã khắc phục sự cố

Đây là mã của tôi trong trường hợp ai đó muốn sử dụng nó

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

lưu cái này làm switchbranch.sh

Sau đó sử dụng nó từ thiết bị đầu cuối ./switchbranch.sh PRJ-1234


Đối với tôi, đó cũng là đường dẫn / tên ngược dòng bên phải và bao gồm để tìm nạp tất cả các thẻ từ xa cũng như "git fetch --all --tags --prune" tìm đúng tên: "git Branch -a | grep some_upstream" trước khi kiểm tra nó với đường dẫn đầy đủ là "git checkout -f --track -b new_branch điều khiển từ xa / ngược dòng / some_upstream_branch"
kisna

4

Không có câu trả lời nào trong số này giải quyết vấn đề của tôi:

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.

Tôi đã cố gắng quay trở lại và xây dựng cam kết cho Version object v2.0.1. May mắn thay, tôi đã có ý tưởng để thử toàn bộ mã băm và nó đã hoạt động! Điều đó có nghĩa là tôi đã sử dụng sai mã băm.

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...))
$

Như được hiển thị ở trên, đối với mã băm một phần, bạn phải cung cấp mặt trước, không phải mặt sau.


4

Đã xảy ra với tôi sau khi đổi tên một tệp không được cam kết trong Android Studio.

Git dường như có phiên bản cũ trong kho lưu trữ của nó, ngay cả khi nó không còn tồn tại nữa.

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

Vì vậy, tôi đã mở GUI Git của TortoiseGit, cho tôi xem tệp chính xác gây ra sự cố.

Sau đó tôi đã xóa các tập tin từ kho lưu trữ với

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

và vấn đề đã biến mất


3

Trong trường hợp của tôi, tôi đã đổi tên một tệp thay đổi trường hợp của tệp, tức là someFile.js -> someFile.js

Tôi nghĩ rằng điều đó có liên quan đến vấn đề. Làm một git fetch không khắc phục vấn đề.

Tôi đã chuyển các tập tin ra khỏi dự án của mình, thực hiện tìm nạp và thực hiện một cú đẩy mà không có chúng. Sau đó, tôi đã tìm nạp, thêm chúng trở lại, và thực hiện một cú đẩy, và nó đã hoạt động. Tôi không biết nếu tất cả các bước đó là cần thiết, nhưng cuối cùng nó đã hoạt động.


Đẩy mà không cần đổi tên tệp và phát hành git add tệp sau đó đã làm điều đó cho tôi
phil294

3

trong trường hợp của tôi, tôi vào thư mục mô hình con mà không làm

  • git submodule init
  • git submodule update

Vì vậy, git đã được liên kết đến thư mục cha mà thực sự bỏ lỡ chi nhánh đó.


3

kiểm tra xem nó không phải là một lỗi đánh máy trong tên tệp đích. Tôi đã cố gắng lên sân khấu bằng cách gõ

git add includes/connection..php

Nhưng tôi không nhận thấy rằng tôi đang sử dụng hai dấu chấm Nhưng sau đó tôi gõ

git add includes/connection.php

Nó hoạt động


2

Đối với tôi, đó là một vấn đề với thông tin của tôi


Sau khi thử một số câu trả lời, một trong số họ đã giúp tôi giải quyết vấn đề:

Chạy git fetchđã ném lỗi sau:

Không thể giải quyết máy chủ: bitbucket.org

Tất cả những gì tôi phải làm là buộc IDE của tôi (Mã VS trong trường hợp của tôi) phải nhớ thông tin đăng nhập của tôi:

git config --global credential.helper wincred

Git ngay lập tức đồng bộ tất cả các thay đổi, và git checkout <branche>hoạt động tốt ngay bây giờ!


1

Tôi đã nhận được điều tương tự pathspec errortrên git-bash. Tôi đã sử dụng Rùa git trên cửa sổ để chuyển / kiểm tra chi nhánh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.