如何在本地删除分支?


159

我的存储库中有一个master和一个dev分支。我想从计算机中删除master分支,以免我不小心提交它(发生了..)。

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

一个答案说使用这个:

git branch -d local_branch_name

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


该命令的输出是什么?您在哪个分支上?它在控制台中如何显示?
SLaks'2

@SLaks我的问题类型。实际上,它在控制台中确实表示已删除该分支,但是在GitHub应用程序中(即使在重新启动后),该分支和提交仍然可见。输出是Deleted branch master (was e8a8e29).
Nate

Windows的GitHub也显示了远程分支
SLaks

@SLaks因此,在本地删除分支之后,如果我在GitHub for Windows应用程序中单击它,是否只是重新克隆它?我想阻止自己直接对master分支进行更改。
Nate 2015年

Answers:


114

我认为(基于您的评论)我知道您想做什么:您希望存储库的本地副本既不具有普通的本地分支master也没有远程跟踪分支origin/master,即使您克隆的存储库是github,都具有一个本地分支master,你希望从GitHub的版本中删除。

您可以通过在本地删除远程跟踪分支来做到这一点,但是每次您要求git将本地存储库与远程存储库同步时,它都会简单地返回,因为您的git会询问他们的git“您拥有哪些分支”,并且说“我有master”,因此您的git(重新)会origin/master为您创建,以便您的存储库具有他们的存储库。

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

git branch -d -r origin/master

但是同样,它将重新进行重新同步。可以(使用remote.origin.fetch操纵)击败它,但最好是受到足够的训练以免master在本地创建或修改。




17

就我所能理解的原始问题而言, 您错误地将提交添加到本地主机 ,但尚未推送更改。现在,您要取消更改,并希望删除本地更改,并从远程分支中创建一个新的master分支。

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

git reset --hard origin/master

13

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

如果您要完全删除分支(也要远程删除),请结合使用上述命令$ git push origin :[name_of_your_new_branch]警告:此命令将擦除所有现有分支,并可能导致代码丢失。请注意,我不认为这是您要执行的操作。

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


1

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

git分支-d


1
这应该是答案吗?还是澄清问题?还是一个简单的问题?太短了,我无法分辨。您想详细说明吗?
Yunnosch

0

根据您的标签,我假设您正在使用Github。为什么不为您的主分支创建一些分支保护规则?这样,即使您确实尝试推动掌握,它也会拒绝它。

1)在Github上转到您的仓库中的“设置”标签。

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

3)点击“添加规则”

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

5)选中“合并前需要拉取请求评论”

我也建议对您的dev分支执行相同的操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.