我今天发布这篇文章的原因是,我在命令行界面上看到的行为与网上阅读的不同,令我感到困惑。
这里涉及到的两个命令是:
我唯一的本地分支是:
正如您所看到的,我试图删除远程分支并立即从源获取最新更改,但由于某种原因它重新创建了该分支。我不知道为什么会这样做,我很困惑。我没有本地对应的
我想知道为什么会发生这种情况,同时(为了回答这个问题的更普遍的标题,并帮助每个在stack overflow上寻找答案的人),我想获得一些更一般的答案:
- 删除远程分支有两种方法。有没有一个真正好记、简单的方法来记住在哪种情况下使用哪种方法? - 假设这很重要,那么是否存在相应的本地分支(用于远程分支)的存在会影响如何删除远程分支的决策? - 追踪引用/关系在本地和远程分支之间的存在如何影响选择删除分支的方式,哪些删除分支的方法也会清理追踪引用?
这里涉及到的两个命令是:
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
分支,所以我不知道为什么会这样做。我想知道为什么会发生这种情况,同时(为了回答这个问题的更普遍的标题,并帮助每个在stack overflow上寻找答案的人),我想获得一些更一般的答案:
- 删除远程分支有两种方法。有没有一个真正好记、简单的方法来记住在哪种情况下使用哪种方法? - 假设这很重要,那么是否存在相应的本地分支(用于远程分支)的存在会影响如何删除远程分支的决策? - 追踪引用/关系在本地和远程分支之间的存在如何影响选择删除分支的方式,哪些删除分支的方法也会清理追踪引用?