Ответ 1
Попробуйте git fetch
, чтобы ваш локальный репозиторий получал всю новую информацию от github. Он просто берет информацию о новых ветких и фактическом коде. После этого git checkout
должен работать нормально.
Я не уверен, почему я не смог проверить ветку, с которой я работал раньше. См. Приведенные ниже команды (примечание: co
является псевдонимом для checkout
):
[email protected]:~/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
[email protected]:~/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
UPDATE в каталоге .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 <[email protected]>
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 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"
Попробуйте git fetch
, чтобы ваш локальный репозиторий получал всю новую информацию от github. Он просто берет информацию о новых ветких и фактическом коде. После этого git checkout
должен работать нормально.
Я получал эту ошибку, когда пытался оформить заказ на новую ветку:
ошибка: pathspec 'BRANCH-NAME' не соответствует ни одному из файлов, известных git.
Когда я попробовал git checkout origin/<BRANCH-NAME>
, я получил отдельную ГОЛОВУ:
(отстранен от происхождения /)
Наконец, я сделал следующее, чтобы решить проблему:
git remote update
git fetch
git checkout --track origin/<BRANCH-NAME>
Я получил эту ошибку для ветки, которая была удаленной и не имела локальной ветки отслеживания. Хотя я уверен, что проверил удаленные ветки через простой
git checkout feature/foo
в прошлом, чтобы обойти эту ошибку, я должен был
git checkout -t -b feature/foo origin/feature/foo
Я не знаю, что я сделал, чтобы попасть в эту ситуацию.
Если вы удалили ветку с помощью git branch -D yourbranchname
и снова вытащили/клонировали свое репо, вам может понадобиться снова создать локальную ветку.
Попробуйте:
git checkout -b yourbranchname
У меня есть те же вопросы, и я получил некоторую информацию по этой ссылке: 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" также работает, но я не пробовал), чтобы получить всю ветвь.
Git Пользователи Windows остерегаются - без параметров --icase-pathspecs
или GIT_ICASE_PATHSPECS = 1
env var, что git pathspecs будут чувствительны к регистру, в которых case
git checkout origin/FooBranch "Some/Path/To/File.txt"
не совпадает с
git checkout origin/FooBranch "Some/Path/To/File.txt"
Если имя ветки отсутствует, и у вас нет никакого файла с ограниченным доступом, попробуйте это
git fetch && git checkout <branch name>
git pull
Это просто исправило это для меня :)
Я получил это, когда сделал следующее:
Когда я попытался проверить каталог, я получил эту ошибку.
Чтобы исправить:
Я открыл репо в расширениях git. Я увидел, что файл (со старым именем) был поставлен. Но поскольку он больше не существует, он не может быть зафиксирован.
Я просто отключил этот файл.
Затем я снова добавил файл (на этот раз правильно названный) в git и зафиксировал без ошибок.
У меня такая же проблема, потому что я использовал git clone --depth=1
, что подразумевает --single-branch
.
Выполняет завершенный git clone
.
У меня была эта проблема сегодня, я пытался git checkout foo
и получил error: pathspec 'foo' did not match any file(s) known to git.
Оказывается, я ошибался в репо. Итак, извлеченный урок: проверьте, на каком репо вы смотрите, прежде чем волноваться.
В ОС Windows по умолчанию git устанавливается
core.ignorecase = true
Это означает, что файлы git repo будут нечувствительны к регистру, чтобы изменить это, которое вам нужно выполнить:
\yourLocalRepo> git config core.ignorecase false
эту конфигурацию можно найти в файле .git\config
Во-первых, проверьте родительскую ветвь. Затем введите
git fetch --all --prune
git checkout <your branch>
Надеюсь, поможет!.
Я скопировал 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.
У меня была такая же проблема. Я думал, что у меня есть ветвь с именем foo
, когда я пытаюсь:
git checkout foo
Я получал:
error: pathspec 'foo' did not match any file(s) known to git.
Затем я попробовал имя полной ветки:
git checkout feature/foo
тогда работал у меня.
Если это происходит в Windows, это, вероятно, проблема с именем файла.
У меня была эта ошибка сегодня - я создал новый файл, добавленный в GIT, затем я сменил одну букву в имени файла с нижнего на верхний, а затем я ничего не мог - зафиксировать, вернуть, удалить файл из репо,
Единственное решение, которое я нашел, это снова изменить имя файла обратно в тот же самый случай, когда я добавил этот файл в GIT, а затем сделав GIT revert, чтобы удалить этот файл из GIT, а затем сменив имя файла снова, как я хочу, После этих изменений я мог бы выполнить репо, а затем нажать без проблем.
В моем случае у меня есть TWO branch 1) master (для живого сервера) 2) dev (тестовый сервер). Я установил несколько удаленных программ для ввода кода на соответствующем сервере. Когда я попытался переключить ветвь, я получил ошибку, например error: pathspec 'master' did not match any file(s) known to git.
Вы можете увидеть их на git remote -v
.
Я удалил другой удаленный, кроме origin
remote, с помощью git remote remove <remote-name>
Тогда git fetch
Теперь я могу проверить ветвь на git checkout <branch-name>
.
Произошло со мной после переименования незафиксированного файла в Android Studio.
У Git, похоже, была старая версия в своем хранилище, даже если ее больше не существовало.
fetch, pull, checkout, add all and so on did not help in my case!
Поэтому я открыл графический интерфейс Git TortoiseGit, который показал мне точный файл, вызвавший проблемы.
После этого я удалил файл из хранилища с помощью
git rm -r --cached /path/to/affected/file
и проблема исчезла
Я сделал глупую ошибку, не указав флаг -m во время совершения (lol)
git commit -m "commit message in here"
В моем случае я переименовал файл, изменяющий случай файла, т.е. SomeFile.js → someFile.js
Я думаю, что это было связано с проблемой. Выполнение git fetch не помогло решить проблему.
Я вытащил файлы из своего проекта, сделал выборку и без толчка. Затем я сделал выборку, добавил их обратно и сделал толчок, и это сработало. Я не знаю, нужны ли все эти шаги, но это в конечном итоге сработало.
Ни один из этих ответов не решил мою проблему:
[email protected] ~/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
[email protected] ~/Documents/NetBeansProjects/Version (master)
$ git checkout 3a796a
error: pathspec '3a796a' did not match any file(s) known to git.
Я пытался вернуться и построить фиксацию для Version object v2.0.1
. К счастью, у меня возникла идея попробовать весь хеш-код, и это сработало! Это означает, что я использовал неправильный конец хэш-кода.
[email protected] ~/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
[email protected] ~/Documents/NetBeansProjects/Version ((2ff2a28...))
$
Как показано выше, для частичных хеш-кодов вы должны предоставить интерфейс, а не внешний.
в моем случае я вхожу в каталог подмодулей, не делая
git submodule init
git submodule update
Итак, git был связан с родительской папкой, которая действительно пропустила эту ветвь.
Я столкнулся с этой же проблемой, когда я впервые играл с git. При попытке моего первого совершения...
git commit -m 'first commit!'
Я получил ошибку, упомянутую OP...
error: pathspec 'commit!'' did not match any file(s) known to git.
Я думал, что, возможно, запутался git, используя ключевое слово в сообщении commit, поэтому я попробовал несколько других слов и получил ту же ошибку.
Наконец, я использовал двойные кавычки в сообщении...
git commit -m "first commit!"
Это оказалось успешным...
[master (root commit) 0000000] first commit!
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dummyDoc.txt
У меня была другая причина
У меня был сценарий, который в основном ищет во всех ветвях, соответствующих ключу выпуска jira для "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. Проверьте ваш файл конфигурации в вашей директории 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/*
Обратите внимание, что заголовок указывает только на одну ветку, поэтому он не может найти ссылку на другие существующие ветки, я изменил ее на *, чтобы она проверяла все в источнике.
Я столкнулся с проблемой при переключении моей ветки.
Я сделал git pull для текущей ветки, а затем попытался оформить новую, и это сработало
git pull // on your old branch
git checkout <new_branch>
Для меня это была проблема с моими полномочиями
Попробовав некоторые ответы, один из них помог мне решить проблему:
Запустив git fetch
выдал следующую ошибку:
Не удалось разрешить хост: bitbucket.org
Все, что мне нужно было сделать, это заставить мою IDE (VS Code в моем случае) запомнить мои учетные данные:
git config --global credential.helper wincred
Git немедленно синхронизировал все изменения, и git checkout <branche>
теперь работает нормально!
Я получил тот же pathspec error
на git - bash. Я использовал Tortoise git в окнах для переключения/проверки ветки.
Это может быть вызвано тем, что восходящий поток перезаписывает историю.
Когда это произойдет, я бросаю все затронутые репозитории, клонирую их свежими из восходящего потока и использую 'git format-patch'/'git am', чтобы переправлять любые выполняемые работы из старого мира в новый.
Я столкнулся с подобной проблемой. Что привело меня в эту беду: У меня было несколько удаленных веток, и я удалил папку с кодом. Я потянулся.:
git pull [email protected]
Затем я добавил удаленный репозиторий:
git remote add upstream [email protected]
Затем я попытался изменить ветвь на другую ветку, скажем, AAAA, и я получил ошибку
error: pathspec 'AAAA' did not match any file(s) known to git.
Проведя час, я нашел решение. Я снова удалил исходную папку. Затем я сделал git pull:
git pull [email protected]
Затем я изменил ветвь, прежде чем связывать ее с удаленным репозиторием:
git checkout AAA
то я добавил его в удаленный репозиторий
git remote add upstream [email protected]
После этого я могу легко переключать ветки. Хотя это не стандартный способ, но он работал у меня после того, как я попробовал все вышеперечисленные варианты.