如何在本地删除分支?

How to remove a branch locally?

提问人:Nate 提问时间:2/1/2015 更新时间:12/6/2021 访问量:364133

问:

我的存储库中有一个 master 和一个 dev 分支。我想从我的计算机中删除 master 分支,这样我就不会意外地提交它(它已经发生了......

这里有关于如何在本地远程删除分支的问题,但我无法找到如何仅在本地删除分支。

一个答案说使用这个:

git branch -d local_branch_name

但是我试过了,分支仍然显示在 GitHub 应用程序中。

Git GitHub

评论

0赞 SLaks 2/1/2015
该命令的输出是什么?你在哪个分支机构?它是如何显示在控制台中的?
0赞 Nate 2/1/2015
@SLaks我的问题中有一个类型。在控制台中,它实际上确实说分支已被删除,但在 GitHub 应用程序中(即使在重新启动它之后),分支和提交仍然可见。输出为Deleted branch master (was e8a8e29).
0赞 SLaks 2/1/2015
适用于 Windows 的 GitHub 也显示远程分支
0赞 Nate 2/1/2015
@SLaks 因此,在本地删除分支后,如果我在 GitHub for Windows 应用程序中单击它,它只是重新克隆它吗?我想防止自己能够直接对 master 分支进行更改。
0赞 davidhartman00 10/13/2020
我明白你想做什么——保护你的远程主人。如果您(或您的 GIT 管理员)创建规则,防止未经授权的人推送到 Master,那就更好了。

答:

16赞 user3377716 2/1/2015 #1

适用于 Windows 的 Github 应用程序显示存储库的所有远程分支。如果您已使用 本地删除了该分支,则远程分支仍存在于 Github 存储库中,并且无论在 Windows Github 应用程序中如何显示,该分支都会出现。$ git branch -d [branch_name]

如果要完全删除分支(也要远程删除),请将上述命令与 .警告:此命令会擦除所有现有分支,并可能导致代码丢失。小心,我不认为这是你想做的。$ git push origin :[name_of_your_new_branch]

但是,每次删除本地分支更改时,远程分支仍将出现在应用程序中。如果您不想继续进行更改,请忽略它并且不要单击,否则您可能会克隆存储库。如果您还有其他问题,请告诉我。

137赞 torek 2/1/2015 #2

我认为(根据您的评论)我理解您想做什么:您希望存储库的本地副本既没有普通的本地分支,也没有远程跟踪分支,即使您克隆的存储库(github 存储库)有一个您不想从 github 版本中删除的本地分支。masterorigin/mastermaster

你可以通过在本地删除远程跟踪分支来做到这一点,但每次你要求你的 git 将你的本地存储库与远程存储库同步时,它都会回来,因为你的 git 会问他们的 git“你有什么分支”,它说“我有”所以你的 git(重新)为你创建,这样你的仓库就有他们的东西。masterorigin/master

要使用命令行界面在本地删除远程跟踪分支,请执行以下操作:

git branch -d -r origin/master

但同样,它只会在重新同步时返回。也可以(使用操作)来解决这个问题,但你最好只是遵守足够的纪律,不要在本地创建或修改。remote.origin.fetchmaster

评论

0赞 Tobias Kienzler 7/28/2017
相关新闻: 如何在 git 中克隆单个分支?
208赞 Benyamin Jafari 12/4/2017 #3

要强制删除本地分支,请执行以下操作:

$ git branch -D <branch-name>

[]:

-D是 的快捷方式。--delete --force


评论

15赞 Fueled By Coffee 1/25/2018
如果我删除设置了上游的本地分支,然后进行正常推送,它不会删除远程分支,对吗?
3赞 Benyamin Jafari 12/31/2019
@FueledByCoffee 这是这个问题的答案
33赞 Eugene Kaurov 6/29/2018 #4

据我所知,原始问题,您错误地将提交添加到本地主节点,并且尚未推送该更改。 现在,您想要取消更改,并希望删除本地更改并从远程分支创建新的主分支。

您只需重置更改并从远程服务器重新加载主服务器即可:

git reset --hard origin/master
1赞 Qamar Stationwala 7/17/2019 #5

通过您的标签,我假设您使用的是 Github。为什么不为主分支创建一些分支保护规则呢?这样,即使你试图推动到master,它也会拒绝它。

1) 转到 Github 上存储库的“设置”选项卡。

2) 点击左侧菜单中的“分行”。

3) 点击“添加规则”

4) 输入“master”作为分支模式。

5) 勾选“合并前需要拉取请求审核”

我还建议对你的开发分支做同样的事情。

2赞 Kumar Vaduganathan 9/21/2019 #6

您需要切换到另一个分支并尝试相同的操作。

git 分支 -d

评论

2赞 Yunnosch 9/21/2019
这应该是一个答案吗?还是澄清问题?还是一个简单的问题?它太短了,我说不出来。你想详细说明吗?
3赞 Mehdi Bouzidi 12/11/2020 #7

您可以使用 Git GUI 删除 Windows 上的多个分支:

  1. 转到“项目”文件夹
  2. 打开 Git Gui:enter image description here
  3. 点击“分行”:enter image description here
  4. 现在选择“删除”:enter image description here
  5. 如果要删除所有分支,除了它们是否合并之外,请选中“始终(不执行合并检查)”enter image description here
2赞 Ravi Raj 3/4/2021 #8
git branch | grep -v "develop" | grep -v "master" | xargs git branch -D

简单易行。它将删除除您正在处理的所有内容以及“开发”和“master”。

13赞 Hemanth Kollipara 6/13/2021 #9

使用以下命令删除分支后:

git branch -d BranchName

要删除远程存储库中不再存在的分支,请使用:

git fetch -p

-p表示修剪,以从本地存储库中删除远程存储库中不存在的分支。