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 ]

1 голос
/ 14 марта 2014

Это может быть вызвано, когда вышестоящий переписывает историю.

Когда это происходит, я выбрасываю все затронутые репозитории, клонирую их только что из апстрима и использую 'git format-patch' / 'git am', чтобы переправлять любую работу, идущую из старого мира в новый.

1 голос
/ 16 сентября 2015

У меня была эта проблема при работе с Git на Windows. В моем случае это была проблема. Я уже добавил и зафиксировал файл в своем хранилище, а затем изменил только его регистр. Чтобы решить эту проблему, я переименовал файл в соответствии с исходным регистром и снова переименовал его с помощью команды git mv. По-видимому, это позволяет git отслеживать переименование.

Примечание: я использовал Cygwin.

1 голос
/ 19 июля 2016

В моем случае я запускаю "git fetch" перед "git branch ...:, но получаю ту же ошибку. Затем я проанализировал ее и нашел ошибку в имени моей ветви . Исправил ее и переключился нафилиал успешно.

1 голос
/ 19 октября 2016

Одна из возможных причин, если вы работаете на windows машине с MINGW *

ISSUE

Проверьте название филиала, которое вы хотите оформить. Windows пропускает символ ' из имени ветви при разборе команды.

например: если у вас есть имя ветви, например bugfix/some-'branch'-name

Когда вы вводите команду: > git checkout bugfix/some-'branch'-name itбудет анализировать его как bugfix/some-branch-name, обратите внимание, что он пропускает символ '.

REMEDY

Чтобы проверить этот тип имени ветви, добавьте escape-символ при вводе команды.

Тип: > git checkout bugfix/some-\'branch\'-name

Это будет работать тогда !!

0 голосов
/ 27 июля 2018

У меня была та же проблема (с версией git-latest) и я обнаружил, что это связано с кодами escape-цветов, используемыми git.Интересно, может ли это объяснить, почему эта проблема возникает так часто.

Это демонстрирует, что может происходить, хотя цвет обычно устанавливается в конфигурации git, а не в командной строке (в противном случае его эффект был бы очевиден):

~/dev/trunk (master)$ git checkout `git branch -l  --color=always  | grep django-1.11`
error: pathspec 'django-1.11' did not match any file(s) known to git.
~/dev/trunk (master)$ git branch -l  --color=always  | grep django-1.11
  django-1.11
~/dev/trunk (master)$ git checkout `git branch -l  | grep django-1.11`
Switched to branch 'django-1.11'
Your branch is up-to-date with 'gerrit/django-1.11'.
~/dev/trunk (django-1.11)$ 

Я полагаю, что git config не работает с настройками цвета, должен работать color = auto должен делать правильные вещи.Моя конкретная проблема заключалась в том, что используемый git recent был определен как псевдоним с жестко закодированными цветами, и я пытался создавать команды поверх этого

0 голосов
/ 30 августа 2017

Вот как я решил свою ошибку!

Сначала я удалил репо локально, а также с моего Github.Затем я разветвился и клонировал в свой локальный репозиторий.

После этого я внес в него изменения и, наконец,

создал свою ветку, используя

$git checkout -b moh_branch

изменить рабочую ветку

$git checkout moh_branch

протолкнуть ветку на GitHub

$git push origin moh_branch

После этого я могу зафиксировать свое изменение следующим образом: -

$git add .

$git commit -m "updated readme.md"

$git push origin moh_branch

Успешно для меня 100%!

0 голосов
/ 07 июля 2017

Если вы работаете в Windows, вы, вероятно, просто измените имя файла на строчные и прописные, например File.txt - file.txt

Итак, проверьте, какой файл у вас есть в git и переименуйте его в то, что вы хотите:

git status

Тогда мне нужен file.txt -> но git status дает мне File.txt, поэтому просто переименуйте его

git mv File.txt file.txt

И проблема решена.

0 голосов
/ 24 августа 2015

Я получил это на рабочем столе Github после нажатия «Обновить из ...», когда был выбран неправильный репозиторий.Затем я изменил репо на правильный, но когда я попытался удалить изменения, я получил эту ошибку.Это потому, что это были новые файлы в репо, который я ошибочно выбрал, но не в том, из которого я хотел обновить.

Я просто изменил селектор репо обратно на тот, который я неправильно выбрал в первый раз, после чего смогудалите изменения.

Затем я изменил селектор репо на тот, который хотел.

0 голосов
/ 18 апреля 2017

Поскольку ваша ветвь функций существует в удаленном режиме, повреждено ваше локальное хранилище. Итак, удалите локальное репо и повторно клонируйте. Теперь «git checkout <branch_name>» должно работать для вас.

0 голосов
/ 21 января 2017

Это сработало для меня.Он отменяет все локальные изменения и сбрасывает его до последнего коммита.

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