我不确定为什么我不能签出我以前工作过的分支。参见下面的命令(注意: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时,我遇到了同样的问题。当我尝试第一次提交…

git commit -m 'first commit!'

我得到了OP提到的错误…

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

我想我可能在提交消息中使用关键字混淆了git,所以我尝试了一些其他的单词,并收到了相同的错误。

最后我在邮件中使用了双引号…

git commit -m "first commit!"

结果证明这是成功的……

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

其他回答

由于您的特性分支存在于远程,因此损坏的是您的本地回购。因此,删除您的本地回购和重新克隆。现在'git checkout <branch_name>'应该为您工作了。

我得到这个错误的分支是远程的,没有本地跟踪分支。即使我确定我已经通过简单的检查远程分支

git checkout feature/foo

在过去,为了避免这个错误,我必须

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

我也不知道我做了什么让自己陷入这种境地。

下面是我如何解决我的错误!

首先,我删除了我的回购本地也从我的Github。然后我将其分叉并克隆到本地存储库。

在那之后,我做了我的改变,最后

使用以下命令创建我的分支

$git checkout -b moh_branch

变更工作分支

$git checkout moh_branch

将分支推到GitHub

$git push origin moh_branch

之后,我可以提交我的更改如下:-

$git添加。

$git commit -m "updated readme.md"

$git push origin moh_branch

我100%成功了!!

更好的/更简单的:

git fetch origin yourLocalBranch:yourLocalBranch
git checkout yourLocalBranch

我得到这个错误时,我浅克隆一个回购,并得到了一个解决方案 例如,我想要签出的分支是release/120

git ls-remote origin release/120 # make sure the remote branch exits
git fetch origin refs/heads/release/120:refs/remotes/origin/release/120 # fetch to local repo
git co -b release/120 origin/release/120 # checkout to workspace

在我自己创建的两个本地分支上的Windows上也发生了这种情况。 一出分行,我就不能结帐了

bugfix_ # 303 _multiline_opmerkingen_not_displaying_correctly_in_viewer

也不

bugfix_339_hidden_fields_still_validated

你可以在下面的Git bash截图中看到。

当我尝试使用Git GUI时,我甚至根本无法看到分支。然而,当我使用Pycharms git工具时,我看到了这个:

因此,出于某种原因,窗口决定添加一些难以破译的字符到我的分支名称,这就是它没有工作的原因。在Pycharm中重命名分支达到了目的,所以我猜这也适用于其他ide。