繁体   English   中英

删除本地“远程分支”而不删除远程分支?

[英]Delete local “remote branch” without deleting remote branch?

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

git checkout -b origin/feature1

但是现在git branch向我展示了这个:

master    
*origin/feature1

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

如何在保持远程分支完好无损的同时删除它,并正确设置它? 我做错了什么?

你的命令应该是:

git checkout -b feature1 origin/feature1

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

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

git checkout master

然后删除它:

git branch -d origin/feature1

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

正如Rob 已经回答的那样,您可以简单地删除具有虚假名称的本地分支。 或者,您可以重命名它,以避免必须先下车:

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

请注意,实际的远程分支具有以refs/remotes/开头的完整内部名称,您可以运行git symbolic-ref HEAD来查看当前分支的完整内部名称(如果您了解refs/heads/ vs refs/remotes/东西)。

删除一个分支就这么简单:

git branch -D <branch name>

但是你也可以重命名旧的:

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

git branch -m <new_name>

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

在此处输入图片说明

列出所有分支

git branch

-d/-D

在本地删除一个分支..

git branch -d branchName

无论合并状态如何,都删除分支

git branch -D branchName

删除远程分支

git push origin --delete branchName

-d 标志

这将删除本地分支。 但它会考虑 git 状态。 即,您必须先提交所有更改。

-D 标志:

这是强制 git 删除本地分支,而不管您尚未暂存或提交的当前更改。 基本上它都会做

--delete --force

推——删除:

要删除远程分支,您不能使用分支(使用 -d/-D 标志时,您将它与分支命令一起使用)。 您需要推送它而不是包括远程名称(在这种情况下为来源)。

获取源名称,运行

git remote

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM