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

时间:2016-01-30 18:41:40

标签: git branch

我在Github上有一个回购。我当地的Git master分支机构正常运行并且是最新的。我通过Github创建了一个gh-pages分支。在我的本地计算机上,我执行以下操作:

git pull
git checkout -b gh-pages

它说我现在在分支gh-pages上,但目录中的所有文件仍然来自我的master分支。如何查看和编辑gh-pages分支上的文件?

2 个答案:

答案 0 :(得分:2)

Adi Levin is correct:您创建了一个新的本地gh-pages分支,它与您在github上创建的gh-pages分支无关。

你没有显示"遥控器"你用于github的名字,但是让我们说origin(这很典型)。如果是这样,当git pull执行git fetch步骤以从github.com上的git存储库获取您的存储库的新内容时,您的本地存储库将获取远程 - 跟踪分支名为origin/gh-pages,与名为gh-pages的远程上的origin匹配。 (如果你为遥控器使用了不同的名称 - 例如你称之为calvinandhobbes - 你获得calvinandhobbes/gh-pages,依此类推。)

然后,你做了git checkout -b ...。这里的关键是-b开关,告诉git checkout请创建一个新的本地分支,忽略所有那些远程分支和我现在拥有的其他本地分支,只需创建一个新的本地分支。这意味着您的本地分支gh-pagesorigin/gh-pages没有任何关系。

修复很简单:退回本地gh-pages(以便您可以使用git branch -d删除分支),然后删除分支:

git checkout master
git branch -d gh-pages

如果你想保留分支(可能你已经对它进行了一些提交),只需重命名它就可以了 - 当你在它上面时,你可以这样做,或者在退回之后,无论你喜欢什么:

git branch -m newname gh-pages

git branch只需要新名称,而不是新名称和旧名称,如果您仍在意外gh-pages,但无论如何都要使新名称和旧名称都有效。“ / p>

现在您已不再拥有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也设置为 track 远程跟踪分支。

也就是说,git checkout gh-pages结束了:

git checkout -b --track gh-pages origin/gh-pages

(与您运行的命令相比,没有--track且没有origin/gh-pages:差异是 gh-pages启动新分支设置了上游分支,即origin/gh-pages 。)

答案 1 :(得分:1)

您必须创建分支并将删除分支设置为跟踪分支:

git branch gh-pages -t origin/ghpages

-t是设置远程跟踪分支。

然后你可以使用它。