Git 在已删除的分支上拉动

Git pull while on a deleted branch

假设我检查了名为 'feature1' 的分支。在我不知道的情况下,有人删除了那个分支。当我坐在这个已删除的分支上时执行 git pull 的结果是什么?我会被调到不同的分支机构吗?

如果您在 feature1 并执行 git pull,则不会发生任何事情。 Beyond Git 失败做拉。您将收到有关无法找到远程引用的错误(因为它已被删除)。您的 feature1 分支保持不变。

你不是"sitting on this deleted branch",因为它是在原处删除的,这不会影响你的本地仓库。您正坐在一个不跟踪远程分支的分支上。

不会发生任何会影响您的本地存储库的事情。而且你不会被切换到不同的分支。

这是您在删除的分支上执行 git pull 时返回的实际信息(假设它被设置为跟踪同名的远程分支):

你的分支是你的。除了你,没有人可以删除它们!

如果您的分支 feature1origin/feature1 作为其上游,并且 feature1 已在 origin 上删除,那么当您 运行 git fetch origin:

  • 没有。您的 origin/feature1 将继续存在。由于 origin 上没有 feature1 供您的 origin/feature1 记住,因此您的 Git 的 origin/feature1 就坐在那里,永远不变。

  • 由于 origin 上不再有 feature1 您已设置 "prune" 选项,您的 Git 将删除您的 origin/feature1。你自己的 feature1 现在有一个不存在的 origin/feature1 作为它的上游。

当然,其中哪一个会发生,取决于您是否设置了 p运行e 选项(例如,通过 运行ning git fetch --prune origin,或设置 fetch.prunetrue 在你的配置中)。

请注意,git pull 只是 运行s git fetch——做这两件事之一——然后通常 运行s git merge 基于什么得到了。由于 nothing 将被提取,two-part pull 命令的第二步将简单地失败。 (无论您是否指定 p运行ing 都是这种情况——fetch 步骤没有在 origin 上看到任何名为 feature1 的内容,并且拉取代码注意到了这一事实。)