【问题标题】:Git pull while on a deleted branchGit pull 在已删除的分支上
【发布时间】:2018-08-06 06:21:10
【问题描述】:

假设我已签出名为“feature1”的分支。最初,我不知道,有人删除了那个分支。当我坐在这个已删除的分支上时,执行git pull 的结果是什么?我会被调到不同的分店吗?

【问题讨论】:

    标签: git version-control git-pull


    【解决方案1】:

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

    如果您的分支feature1origin/feature1 作为其上游,并且feature1 已在origin 上删除,那么当您运行git fetch origin 时会发生其中一件事情:

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

    • 由于 origin 上不再有 feature1并且您已设置“修剪”选项,您的 Git 将删除您的 origin/feature1。您自己的feature1 现在有一个不存在的origin/feature1 作为其上游。

    当然,会发生哪种情况取决于您是否设置了修剪选项(例如,通过运行git fetch --prune origin,或者在您的配置中将fetch.prune 设置为true)。

    请注意,git pull 只是运行 git fetch——它执行这两件事之一——然后通常根据获取的内容运行 git merge。由于 nothing 将被获取,所以由两部分组成的 pull 命令的第二步将失败。 (无论您是否指定修剪都是这种情况——fetch 步骤在 origin 上没有看到任何名为 feature1 的内容,并且拉取代码注意到了这一事实。)

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        您不是“坐在这个已删除的分支上”,因为它是在原点被删除的,这不会影响您的本地存储库。你正坐在一个不跟踪远程分支的分支上。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-11-01
          • 2016-03-24
          • 2023-03-26
          • 2021-04-15
          • 2016-05-03
          • 1970-01-01
          • 2018-02-02
          相关资源
          最近更新 更多