能够编辑远程分支的本地副本



我很难理解/验证Pro Git中的以下行:

重要的是要注意,当您进行提取时远程跟踪分支,您不会自动拥有本地、可编辑它们的副本。换句话说,在这种情况下,你没有新的serverfix分支—您只有一个origin/serverfix指针无法修改。

我为存储库尝试了以下操作。

git clone git://git.bugseng.com/ppl/ppl.git
cd ppl

我从本地机器上删除了文件夹ppl/src/,并将预先存在的文件夹ppl/m4/复制到ppl/m4 - Copy中,以便在本地修改/编辑此文件夹。

然后,我运行git fetch origin只是为了(我想(让自己处于书中引用的上述情况。我(当然(对这个在线存储库没有任何访问权限。

现在,我可以很容易地完成git add .git commit而没有任何错误。git status的输出为:

:~/ppl$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.

一切如预期。也就是说,我已经能够在本地提交并编辑分支。我无法将这一点与书中的一句话相调和,该句话说我不会有这些书的本地可编辑副本。

请注意,您引用的短语指的是serverfix分支,而不是master

master(或任何远程HEAD(的情况下,当您进行克隆时,会自动为您提供一个本地副本;所以你没有必要做一个。

但是,如果有任何其他分支,clone不会为您制作这些分支的本地副本,仅仅fetch也不会为您提供它们的本地副本。您可能有远程跟踪分支,如origin/someBranch,但如果要编辑someBranch,则必须先创建它。

Pro Git引用说git fetch实际上并没有签出您获取的远程分支的本地副本。它只是一个指针,允许git在本地知道分支的存在,并允许您检查它。要对此进行测试,请克隆远程存储库的副本。接下来,在远程fetch-branch-test上创建一个分支。在本地repo上运行git checkout fetch-branch-test,您会收到一个错误,说git找不到分支。在本地运行git fetch,然后运行git branch。您将看到仍然没有fetch-branch-test的本地副本。最后,再次运行git checkout fetch-branch-test,您会注意到现在有了远程分支的本地副本。这是因为git fetch添加了新远程分支的本地指针,但直到运行git checkout后才添加其本地副本。

最新更新