所以我的遥控器上有一个名为feature1的分支。我尝试通过以下方式创建一个跟踪此的本地分支:
git checkout -b origin/feature1
但现在git branch
告诉我这个:
master
*origin/feature1
我知道这不对。它应该是feature1
本地,而不是origin/feature1
。
如何在保持远程分支完好无损的情况下将其删除,并将其设置正确?我做错了什么?
答案 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>
以下是所有命令的完整屏幕截图
答案 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