我不确定为什么我不能签出我以前工作过的分支。参见下面的命令(注意:co是签出的别名):

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.

我不知道这是什么意思,我在谷歌上也找不到任何我能理解的东西。

我如何签出该分支,以及我可能做了什么来打破它?

更新:

我找到了这篇文章,运行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文件夹中):

$ 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更新显示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"

当前回答

我有同样的问题,并从这个链接得到了一些信息:git获取不获取所有分支

所以现在,我可能不确定这种情况是如何发生的,至少我们可以解决它:

步骤1。检查你的“remote.origin”。Fetch”设置,应该是这样的

$ git配置——获取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配置——获取remote.origin.fetch + refs /头/ *:refs /遥控器/产地/ *

然后,你可以尝试“git pull”(也许“git fetch origin”也可以,但我没有尝试)来获取所有的分支。

其他回答

当我试图通过签出一个分支时,我得到了这个错误:

git checkout branchX

这是我以前没有看过的。 它只在显式地声明远程时起作用:

git checkout --track origin/branchX

这样做的原因是,我在git配置中配置了2个不同的远程(origin + something else)。因为我不需要第二个遥控器,所以我把它拿走了,找到了voilá,它工作了。设置默认远程的替代方法:

checkout.defaultRemote=origin

对我没用

我在这个问题上失去了理智,但后来我读了文档,意识到我的公司已经将他们的回购分割成多个遥控器,所以一些分支将在主遥控器上,而其他分支将要求你从不同的遥控器上获取。

检查您试图签出的回购是否有一个或多个远程

这可能是由于上游重写历史造成的。

当这种情况发生时,我抛出所有受影响的回购,从新上游克隆它们,并使用'git format-patch' / 'git am'将任何正在进行的工作从旧世界转移到新的世界。

最近,当我试图用下面的命令签出到我的主分支时,确实发生了这个错误。

Git checkout master

由于Github已经将命名约定从master更改为main,上面的命令会给你错误。因此,您可以使用下面的命令来代替它。

git checkout main 

我在Windows上使用Git时遇到了这个问题。对我来说,这是个案问题。 我已经向我的存储库添加并提交了一个文件,后来只修改了它的大小写。 为了解决这个问题,我重命名了文件以匹配原来的大小写,并使用git mv命令再次重命名。显然,这可以让git跟踪重命名。

注意:我使用的是Cygwin。