"git fetch"是一个远程分支。

13 浏览
0 Comments

"git fetch"是一个远程分支。

远程仓库包含多个分支,例如 origin/daves_branch:

$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/master

我如何在本地仓库中切换到 daves_branch 分支,使其跟踪 origin/daves_branch

我尝试了以下命令:

$ git fetch origin daves_branch
$ git checkout daves_branch

admin 更改状态以发布 2023年5月24日
0
0 Comments

我使用过fetchcheckout...

git fetch  :
git checkout 


其中,是远程分支或源参考,是尚不存在的本地分支或目标参考,您希望跟踪它并且可能希望将其命名为远程分支或源参考。这在的说明中在选项下有解释。
Bash很聪明,如果我在远程分支的前几个字母之后按Tab,它会自动完成第一个命令。也就是说,我甚至不需要命名本地分支;Bash会自动为我复制远程分支的名称。感谢Bash!
另外,正如这篇类似的Stack Overflow帖子中的回答所示,如果您没有在fetch中命名本地分支,则仍然可以在您检出时使用-b标志来创建它。也就是说,git fetch ,然后跟随git checkout -b /与我的初始答案完全相同。显然,如果您的存储库只有一个远程,则在fetch之后只需执行git checkout ,它将为您创建一个本地分支。例如,您刚刚克隆了一个存储库并希望从远程检出其他分支。我相信一些关于fetch的文档可能直接从pull中复制过来了。特别是选项中关于的部分是相同的。但是,我不认为fetch会进行merge,因此如果你让冒号的目标一侧为空,fetch应该不会执行任何操作

注意:git fetch 等同于git fetch :,因此不会执行任何操作,但git fetch 等同于git fetch :,这将把远程的复制到本地。

我猜这只有在你想本地复制一个远程分支,但不一定立即检出时才有用。否则,我现在会使用被接受的答案,这在checkout描述的第一部分和选项部分的--track解释中详细说明,因为这只需要一行代码。嗯……有点像一行代码,因为你仍然需要先运行git fetch

FYI: (来源:目的地)的顺序解释了Git 1.7版本之前奇怪的删除远程分支的方法。也就是说,将没有任何内容推送到目标refspec。

0
0 Comments

更新:使用 Git Switch

下面提到的所有信息都是准确的,但是增加了一个新命令 git switch ,该命令简化了操作。

如果 daves_branch 在远程仓库中存在,但是本地分支中不存在,那么只需输入:

git switch daves_branch

由于你在本地没有这个分支,这将自动在远程仓库中搜索 switch 命令。然后它还会自动设置远程分支跟踪。

请注意,如果 daves_branch 本地不存在,则需要先使用 git fetch ,然后再使用 switch


原始文章

您需要创建一个本地分支来跟踪一个远程分支。以下命令将创建一个名为 daves_branch 的本地分支,跟踪远程分支 origin/daves_branch。当您推送更改时,远程分支将被更新。

对于大多数最新版本的 Git:

git checkout --track origin/daves_branch

其中,--trackgit checkout -b [branch] [remotename]/[branch] 的缩写,其中 [remotename] 在此处是 origin,[branch] 在此处是两次出现的 daves_branch

对于 Git 1.5.6.5,您需要使用以下命令:

git checkout --track -b daves_branch origin/daves_branch

对于 Git 1.7.2.3 及更高版本,这已经足够了(可能早些版本也是如此,但这是我可以快速找到的最早确认):

git checkout daves_branch

请注意,使用最新的 Git 版本,此命令不会创建本地分支,将使您处于“分离 HEAD”状态。如果您需要本地分支,请使用 --track 选项。

完整的详细信息请参见:3.5 Git 分支 - 远程分支、跟踪分支

0