删除Git中的远程分支:一劳永逸地理解它 [英] Deleting remote branches in git: understanding it for once and for all

查看:17
本文介绍了删除Git中的远程分支:一劳永逸地理解它的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我真的快被这事逼疯了。坦率地说,我不确定为什么我不能理解它,因为它应该是简单的,对吗?首先,我在这方面做了大量的搜索。我读了一大堆关于Stackoverflow的东西,我读了通过大量谷歌搜索找到的博客文章。然而,尽管这个问题看起来多么重复和简单,一些细节仍然不清楚,所以我提前向那些在下投票/关闭按钮上徘徊的人道歉。我今天在这里发帖的原因是因为我在命令行上看到的行为与我在网上实际读到的行为不同。这让我很困惑。

这里讨论的两个命令是:

git branch -r -d origin/topic1

git push origin :topic1

我到目前为止的理解(虽然我可能完全错了,我的大脑被烧焦了):

  • 第一个应删除跟踪引用远程分支
  • 第二个应该删除远程分支,但不删除跟踪引用(如果存在本地分支),尽管作为初学者,您不删除跟踪引用的原因似乎毫无意义并且令我感到困惑。

这是我最近遇到的一个场景。我刚刚克隆了一个具有两个远程分支的存储库:

origin/master
origin/develop

我唯一的本地分支机构是:

master

我想删除远程分支origin/develop,因此请注意:

Robert@COMP /c/Code/project (master)
$ git branch -rd origin/develop
Deleted remote branch origin/develop (was 9ff16e8).

Robert@COMP /c/Code/project (master)
$ git fetch
From github.com:username/project
 * [new branch]      develop    -> origin/develop

如您所见,我试图删除远程分支,并立即从原始位置获取最新的更改,但由于某种原因,它重新创建了分支。我不知道它为什么要这样做,我很困惑。我没有origin/develop的本地对应分支,所以我不知道它为什么要这样做。

我想知道为什么会发生这种情况,但(为了解决这个问题的更一般的标题,或许也为了帮助其他所有人在清除堆栈溢出的过程中找到这些令人困惑的歧义的答案),我想要一些问题的更一般的答案:

  • 删除远程分支有两种方式。什么是真正好的、简单的方法来记住在哪种情况下使用哪种方法?
  • 假设这很重要,那么对应的本地分支(对于远程分支)的存在如何影响如何删除远程分支的决策?
  • 本地分支和远程分支之间是否存在跟踪引用/关系如何影响您选择删除分支的方式,以及删除分支的哪种方法也会清除跟踪引用?

谢谢大家!请救救我的头发!

编辑(答案摘要)

基于下面的回答,我能够澄清其中一件令人困惑的事情。git branch-r选项的文档说明:

列出或删除(如果与-d一起使用)远程跟踪分支。

让我感到困惑的是那些被认为是遥远的东西。对我来说,遥远最初意味着起源和……在我的案例中,GitHub";上有什么。然而,在本地克隆中,GitHub对什么是远程有自己的概念,这是它自己的远程分支的副本。所以基本上看来,删除远程分支需要两个步骤:删除源分支(这是git push origin :topic1),然后删除远程跟踪分支(git branch -rb origin/topic1)。

这对我的理解有帮助,虽然因为这个词在这里有两个意思,所以很难与人沟通,所以我希望对我的问题的这一修正案在未来对人们有所帮助。感谢所有回答了这个问题并将在未来继续为这个问题做出贡献的人!

推荐答案

第一个应同时删除跟踪引用和远程分支

否:是本地操作,只能删除远程跟踪分支(在您的repo内)

远程跟踪分支用于记住从远程回购上的分支获取的上一次SHA1。
如果要删除(远程回购上)分支,则需要告知该远程回购(因此git push :topic1)

本地分支机构(在您的回购中)可以是:

  • 一个简单的分支
  • 远程跟踪分支(由FETCH创建的分支)
  • 本地跟踪分支(因为它有关联的upstream branch)

How can I delete all git branches which are already merged?中所述,一旦删除了远程Repo的多个分支,您就可以使用:

修剪本地Repo的所有远程跟踪分支
git remote prune origin

这篇关于删除Git中的远程分支:一劳永逸地理解它的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆