我在Github上有一个存储库。我本地的 Git 主分支工作正常且最新。我通过Github创建了一个gh-pages
分支。在本地计算机上,我执行以下操作:
git pull
git checkout -b gh-pages
它说我现在在分支gh-pages
,但是目录中的所有文件仍然来自我的master
分支。如何查看和编辑gh-pages
分支上的文件?
Adi Levin是正确的:你创建了一个新的本地gh-pages
分支,该分支与你在github上创建的gh-pages
分支无关。
没有显示你用于github的"远程"名称,但假设它是origin
(这是非常典型的(。 如果是这样,当git pull
执行git fetch
步骤以从 github.com 上的 git 存储库获取存储库的新内容时,您的本地存储库会获取一个名为 origin/gh-pages
的远程跟踪分支,该分支与名为 origin
的远程上的gh-pages
匹配。 (如果您为遥控器使用不同的名称(例如,您将其称为calvinandhobbes
(,您将获得calvinandhobbes/gh-pages
,依此类推。
然后,你做了git checkout -b ...
. 这里的关键是-b
开关,它告诉git checkout
:请创建一个新的本地分支,忽略所有那些远程分支和我现在拥有的其他本地分支,只需为我创建一个新的本地分支。 这意味着您当地的分支机构gh-pages
不会以任何方式与您的origin/gh-pages
绑定。
修复很简单:从本地gh-pages
中恢复(以便您可以使用 git branch -d
删除分支(,然后删除分支:
git checkout master
git branch -d gh-pages
如果你想保留分支(也许你已经在它上面做了一些提交(,只需重命名它 - 你可以在它的时候这样做,或者在离开它之后,无论你喜欢什么:
git branch -m newname gh-pages
(如果您仍然在意外gh-pages
,git branch
只需要新名称,而不是新名称和旧名称,但无论如何都提供新名称和旧名称都有效(。
现在您不再有gh-pages
分支,请告诉git checkout
切换到本地gh-pages
分支:
git checkout gh-pages
等等,什么? 我们刚刚摆脱了它,我们不能再继续下去了!
完全。 git checkout
命令无法访问此不存在的分支。 所以,当它尝试时,它会对自己说:"等等,嗯,还没有gh-pages
。 我想知道是否有一个名为gh-pages
的远程跟踪分支? 它会查看您所有的远程跟踪分支,哇嘿,它就在那里! 一个且只有一个远程跟踪gh-pages
分支,即origin/gh-pages
!
它在这一点上所做的有点神奇:它为你创建了一个新的本地分支gh-pages
,有点像它对-b
的方式,但不同:新gh-pages
设置为从与origin/gh-pages
相同的提交开始,并且,新gh-pages
也被设置为跟踪远程跟踪分支。
也就是说,git checkout gh-pages
最终会做:
git checkout -b --track gh-pages origin/gh-pages
(与您运行的命令相比,没有--track
也没有origin/gh-pages
:区别在于gh-pages
开始的位置以及新分支是使用上游分支设置的,即 origin/gh-pages
。
您必须创建分支并将删除分支设置为跟踪分支:
git branch gh-pages -t origin/ghpages
-t
是设置远程跟踪分支。
然后你可以使用它。