[英]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/-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.