Git: невозможно оформить ветку - ошибка: pathspec '...' не соответствует ни одному из файлов, известных git - PullRequest
574 голосов
/ 13 мая 2011

Я не уверен, почему не могу оформить ветку, над которой я работал ранее. См. Команды ниже (примечание: 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.

Как мне оформить эту ветку и что я мог сделать, чтобы сломать это?

UPDATE

Я нашел этот пост , и запуск 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"

Ответы [ 42 ]

790 голосов
/ 07 сентября 2011

Попробуйте git fetch, чтобы ваш локальный репозиторий получал всю новую информацию от github.Он просто берет информацию о новых ветвях и не содержит фактического кода.После этого git checkout должен нормально работать.

297 голосов
/ 15 сентября 2015

Я получал эту ошибку при попытке оформить новую ветку:

ошибка: спецификация пути 'BRANCH-NAME' не соответствует ни одному из файлов, известных git.

Когда я попытался git checkout origin/<BRANCH-NAME>, я получил отдельную ГОЛОВУ:

(отдельно от источника /)

Наконец, я решил следующую проблему :

git remote update
git fetch 
git checkout --track origin/<BRANCH-NAME>
141 голосов
/ 31 мая 2011

Я получил эту ошибку для ветви, которая была удаленной и не имела локальной ветви отслеживания.Даже если я уверен, что в прошлом я проверял удаленные ветви с помощью простого

git checkout feature/foo

, чтобы обойти эту ошибку, мне пришлось

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

Понятия не имеючто я сделал, чтобы попасть в эту ситуацию тоже.

77 голосов
/ 04 февраля 2014

Если вы удалили ветку с помощью git branch -D yourbranchname и снова вытащили / клонировали репо, вам может потребоваться снова создать локальную ветку.

Попробуйте:

git checkout -b yourbranchname
38 голосов
/ 08 августа 2017

У меня те же вопросы, и я получил некоторую информацию по этой ссылке: git fetch не выбирает все ветви

Так что теперь я не уверен, как эта ситуация произошла, по крайней мере, мы можем ее решить:

Шаг 1. Проверьте настройку «remote.origin.fetch», она должна быть такой

$ git config --get remote.origin.fetch

+ ссылки / главы / private_dev_branch: ссылки / пультов ДУ / происхождение / private_dev_branch

Шаг 2. Измените "remote.origin.fetch", чтобы получить все

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

$ git config --get remote.origin.fetch

+ ссылки / главы / *: ссылки / пультов ДУ / происхождение / *

Затем вы можете попробовать "git pull" (возможно, "git fetch origin" также работает, но я не пытался), чтобы получить всю ветку.

24 голосов
/ 21 февраля 2014

Пользователи Git Windows остерегаются - без параметра --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"
19 голосов
/ 18 мая 2017

Если в имени ветки нет незафиксированного файла, попробуйте это

git fetch && git checkout <branch name>
14 голосов
/ 29 августа 2018
git pull

Это просто исправило это для меня:)

12 голосов
/ 26 ноября 2014

Я получил это, когда сделал следующее:

  • Используется IntelliJ IDE, подключенный к git
  • Создан новый файл и добавлен в git
  • Переименован в новый файл

Когда я пытался проверить в каталоге, я получил эту ошибку.

Исправить:

Я открыл репо в расширениях git. Я видел, что файл (со старым именем) был поставлен. Но так как он больше не существовал, его нельзя было совершить.

Я просто удалил этот файл.

Затем я заново добавил файл (на этот раз правильно названный) в git и зафиксировал без ошибок.

9 голосов
/ 25 августа 2016

У меня возникла та же проблема, потому что я использовал git clone --depth=1, что подразумевает --single-branch.

. Завершить git clone исправит это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...