Git - 切换到远程创建的新分支上的文件



我在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-pagesgit 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是设置远程跟踪分支。

然后你可以使用它。

相关内容

最新更新