我试图按照Git: "Not currently on any branch." Is there an easy way to get back on a branch, while keeping the changes?的说明操作,但git checkout
似乎已被破坏:
$ git checkout origin/web-zach
HEAD is now at 1366cb1... Changed so css files not ignored
$ git status
# Not currently on any branch.
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .cordova/config.xml
# www/languages/pt/sounds/
nothing added to commit but untracked files present (use "git add" to track)
更具体地说,我担心“目前没有任何分支”的消息。 git checkout
似乎没有在这里做任何事情......那个命令的全部目的不是把我放在一个分支上吗?我怎样才能回到分支并再次提交/推送?
答案 0 :(得分:41)
git status
的输出表明您的工作目录是干净的;好。
现在,通过运行
git checkout origin/web-zach
您正在尝试查看名为origin/web-zach
的远程跟踪分支;它是您的仓库本地的一种特殊类型的分支,用于跟踪位于名为web-zach
的远程存储库中的相应分支origin
。
但是,HEAD
引用(您可以将其视为地图上的 You-are-here 标记)无法指向远程 - 跟踪分支;只有#&#34;正常&#34;本地分支,或直接提交。当您尝试签出远程跟踪分支时,HEAD
引用最终将直接指向远程跟踪分支的 tip (即提交远程跟踪分支指向的地方):
当HEAD
未指向&#34;正常&#34;本地分支,但直接指向提交 ,最终处于所谓的&#34; detached-HEAD状态&#34;。它不是世界末日,但尽可能避免在该州登陆(至少在你的Git学习开始时)可能会给你带来一些惊喜。
要解决此问题,您需要将HEAD
重新附加到某个本地分支。在这里,您可能想要通过运行来创建和签出这样的本地分支,例如
git checkout -b web-zach
HEAD
将指向新创建的名为web-zach
的本地分支:
然后,你应该
$ git status
On branch web-zach
Untracked files:
(use "git add <file>..." to include in what will be committed)
.cordova/config.xml
www/languages/pt/sounds/
nothing added to commit but untracked files present (use "git add" to track)
之后,您可以自由地进行更改,暂存,提交和(如果您对origin
对应的远程仓库具有写入权限,并且没有其他任何人将任何内容推送到{{ 1}}自上次origin/web-zach
)以来,使用
git fetch
答案 1 :(得分:0)
我还想添加,为了使命令起作用,您必须在推送之前提交更改。
git checkout -b web-zach
git status
git commit -a -m "Added new commands Changes"
git push -u origin web-zach