删除本地"远程分支"没有删除远程分支?

时间:2016-03-21 22:50:47

标签: git

所以我的遥控器上有一个名为feature1的分支。我尝试通过以下方式创建一个跟踪此的本地分支:

git checkout -b origin/feature1

但现在git branch告诉我这个:

master    
*origin/feature1

我知道这不对。它应该是feature1本地,而不是origin/feature1

如何在保持远程分支完好无损的情况下将其删除,并将其设置正确?我做错了什么?

4 个答案:

答案 0 :(得分:2)

你的命令应该是:

git checkout -b feature1 origin/feature1

其中'结帐并创建分支feature1,并让其跟踪origin/feature1'。你所做的是创建一个名为origin/feature1的分支,它不跟踪任何远程分支。

要修复它,请换到另一个分支:

git checkout master

然后将其删除:

git branch -d origin/feature1

答案 1 :(得分:2)

您在此处所做的是创建一个名为origin/feature1的普通本地分支。 Git非常满意这个 - 内部,它的名字是refs/heads/origin/feature1,它清楚地将它标记为一个普通的本地分支 - 即使它对用户来说非常混乱,他们认为它看起来像一个远程跟踪分支。

作为Rob already answered,您只需删除具有伪名称的本地分支即可。或者,您可以重命名它,这样可以避免必须先将它取下来:

$ git branch
  master
* origin/feature1
$ git branch -m feature1
$ git branch
  master
* feature1

请注意,实际的远程分支具有以refs/remotes/开头的完整内部名称,您可以运行git symbolic-ref HEAD以查看当前分支的完整内部名称(如果您知道,可能不会产生混淆)关于refs/heads/ vs refs/remotes/事情。

答案 2 :(得分:1)

要删除分支,只需:

git branch -D <branch name>

但你也可以重命名旧的:

  

我知道这不对。它应该只是本地的feature1,而不是origin / feature1。

git branch -m <new_name>

以下是所有命令的完整屏幕截图

enter image description here

答案 3 :(得分:0)

列出所有分支机构

git branch

-d / -D

在本地删除分支。

git branch -d branchName

删除分支而不考虑合并状态

git branch -D branchName

删除远程分支

git push origin --delete branchName

-d标志

这将删除本地分支。但它会说明git状态。也就是说,您必须先提交所有更改。

-D标志:

这将强制git删除本地分支,而不管您尚未暂存或提交的当前更改如何。基本上都可以做到

--delete --force

push --delete:

要删除远程分支,您不能使用分支(当使用-d / -D标志时,可以通过 branch 命令使用它)。您需要推送它,而不要包含远程名称(在这种情况下为原始名称)。

要获取原始名称,请运行

git remote