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

这里有关于如何在本地和远程删除分支的问题,但我还没有找到如何只在本地删除一个分支。

一个回答是这样说的:

git branch -d local_branch_name

但我尝试了一下,分支仍然显示在GitHub应用程序中。


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

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

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


我认为(基于您的评论),我理解您想要做的事情:您希望存储库的本地副本既没有普通的本地分支主,也没有远程跟踪分支源/主,即使您克隆的存储库—github—有一个您不希望从github版本中删除的本地分支主。

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

使用命令行接口在本地删除远程跟踪分支:

git branch -d -r origin/master

但是,它会在重新同步时返回。也有可能解决这个问题(使用remote.origin.fetch操作),但是最好不要在本地创建或修改master。


强制删除本地分支:

$ git branch -D <branch-name>

【注意】:

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



就我对原始问题的理解, 您错误地将提交添加到本地主服务器 并没有推动这些变化。 现在您想要取消更改,并希望删除本地更改,并从远程分支创建一个新的主分支。

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

git reset --hard origin/master

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

1)转到Github上回购的“设置”选项卡。 2)点击左侧菜单上的“分支”。 3)点击“添加规则” 4)输入“master”,输入分支图案。 5)勾选“合并前要求拉请求审查”

我还建议你在开发部门也这么做。


您需要切换到另一个分支并尝试同样的方法。

Git分支-d


你可以使用Git GUI在windows上删除多个分支:

转到项目文件夹 打开Git Gui: 点击“分支”: 现在选择“删除”: 如果你想删除所有的分支,不管它们是否合并,然后勾选“总是(不执行合并检查)”。


git branch | grep -v "develop" | grep -v "master" | xargs git branch -D

简单易行。它会删除所有的除了你正在工作和“开发”和“掌握”。


删除分支后使用:

git branch -d BranchName

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

git fetch -p

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