gpt4 book ai didi

git - 在 git : understanding it for once and for all 中删除远程分支

转载 作者:太空狗 更新时间:2023-10-29 13:43:33 24 4
gpt4 key购买 nike

我今天在这里发帖的原因是因为我在命令行上看到的行为与我在网上实际阅读的行为不同。所以这让我很困惑。

这里有问题的两个命令是:

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的本地对应分支,所以我不知道它为什么这样做。

我想知道为什么会这样,而且(为了解决这个问题的更笼统的标题,并且可能帮助其他人清理堆栈溢出以寻找这些令人困惑的歧义的答案),我想要更笼统的答案一些问题:

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

最佳答案

The first should remove both the tracking reference and the remote branch

否:这是一个本地操作,所以它只能删除远程跟踪分支(在你的仓库中)

远程跟踪分支在这里是为了记住从远程仓库上的分支获取的最后一个 SHA1。
如果你想删除那个分支(在远程仓库上),你需要告诉那个远程仓库(因此 git push :topic1)

本地分支(在你的仓库中)可以是:

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

如“How can I delete all git branches which are already merged?”中所述,删除远程仓库的多个分支后,您可以使用以下方法修剪本地仓库的所有远程跟踪分支:

git remote prune origin

关于git - 在 git : understanding it for once and for all 中删除远程分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21498932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com