
是在编码项目中实施版本控制的绝佳方式–事实上,它是如此绝妙,以至于几乎成了必选项。
其原理是在主版本库中创建重复的分支,对代码进行修改,然后将修改与其他分支合并。这意味着你的版本库中会有很多旧的分支。虽然这些分支的文件大小通常不大,但您仍需要在本地分支上执行 git delete 操作,以保持整洁。
好在这并不费力。不过,您需要根据是否合并变更以及在删除过程中出错时该如何处理来考虑更佳 *** 。您甚至可能需要恢复删除的分支。每种情况都需要不同的技能和命令。
在本教程中,我们将向您演示如何在本地分支上执行 git 删除操作。首先,我们要谈谈你想在 Git 中删除本地分支的一些原因。
是分支的 *** ,也就是核心代码的副本。事实上,没有分支就没有一个正常运行的 Git 仓库。
通常,你会有一个主仓库(名义上的名称是 “main” 和 “trunk”)。主仓库中包含的是您不想编辑的生产代码。相反,你会在主版本库中创建一个复制分支,然后在你的分支中进行你需要的修改。当需要将这些更改带回核心代码时,你就需要检查并合并它们。
分支让团队中的每个人都能在同一个项目中独立协作。在此期间,也不会有修改工作代码或踩踏其他修改的危险。
不过,您也需要在本地分支上执行 git delete 操作。这将是您的一项常规操作,而且这样做有很多充分的理由。
您的生产代码会在主分支中。这也是唯一一个具有永久性的分支。
相比之下,你创建的其他分支几乎都是临时性的。一旦你完成了工作,你就会提交修改,然后将它们与主分支合并,可能是在 等在线仓库中合并。
这意味着,根据项目和团队的不同,你往往会同时打开很多分支。但是,一旦完成合并,这些分支并不会消失。
因此,有几个原因需要删除本地 Git 分支:
正如你稍后会看到的,在本地分支上执行 git delete 在大多数情况下都很简单。不过,在使用这条命令时,更好还是先了解一下它的原理,因为它并不能清除 repo 中与该分支相关的所有内容。
从技术层面上讲,分支只是指向特定提交的指针,也就是你想包含在主分支中的一段代码。因此,当你删除本地 Git 分支时,提交仍会保留。
稍后,我们将讨论分支恢复,以及由于这些提交仍保留在版本库中而可能出现的情况。现在,请先了解有两种不同类型的变更:
这一点我们稍后会详细讨论。无论如何,这也是关于何时删除分支的另一个要点。
考虑到删除带有未合并改动的分支的危险性,在进行代码合并之前,不要在本地分支上运行 git delete 是很重要的。这将确保每个分支都有最新的引用,进而确保最新的代码可用。
另外,在执行 git delete 之前,更好确保临时分支中的任何提交都不再需要。虽然您可以在一定程度上恢复分支,但这并不是您需要时才会做的工作。稍后我们将对此进行深入介绍。
在本教程的其余部分,我们将向你展示如何在本地分支上执行 git delete 操作。我们还会讨论如何处理未合并的变更。
接着,我们会讨论可能会出现的错误,以及如何恢复已删除的本地分支。
最后,我们将简要介绍远程分支以及如何删除它们。
Git 本身提供了一套简单的命令集,无需翻开教科书就能为你提供强大的功能。即便如此,访问 Git 仓库还是有几种不同的方式,这取决于你选择的应用程序和代码编辑器。
虽然你可以在 或 等专用中找到 “minimal click” 设置,但我们将保持简单,使用操作系统内置的工具。
要继续学习,你需要具备以下条件:
实际上,只要你有一个 Git 仓库和一个终端窗口,这就足够了。
首先,我们假设你想删除一个已合并变更的分支。这是最直接、最典型的做法。
不过,您可能需要运行 git branch -a 或 git branch --list 来查看所有分支,并在您的仓库中找到正确的分支:

列出本地 Git 仓库中的分支
下面是删除分支所需的命令:
git branch -d branch-name
你需要使用具体的分支名称,而不是我们的占位符。
这里的 -d 标志代表 “删除”,如果使用小写形式,就可以防止删除有未合并修改的分支。
如果你尝试删除一个未合并的分支,你会看到一个错误(其实更像是一个警告):

试图删除 Git 仓库中带有未合并变更的分支
不过,你可以使用 -D 将标记大写,跳过这个保护性警告。这样,你就可以删除有未合并变更的分支了。
需要注意的是,如果使用大写版本,删除分支时将不会得到确认,因此需要谨慎使用。
因为删除仓库分支是一个重大决定,没有简单的解决 *** ,所以如果您做错了,Git 就会出错。
例如,有时你在本地分支上执行 git delete 操作时,会看到 “Cannot delete branch” 的错误提示:

试图删除 Git 仓库中的某个分支时报错
原因很简单,你在 Git 仓库中的当前位置造成的。你无法删除 “check out” 的分支。
解决办法是转移到另一个分支。
因此,我们建议您 check out main分支。这样,如果你试图删除 main 分支,就会出现错误,而且还能清除版本库中的其他分支。
鉴于删除本地分支后仍会保留提交,因此在执行git delete 操作后仍有少量机会恢复分支。不过,这比先合并这些变更要麻烦得多。在这种情况下,你就会知道自己不再需要某个分支了。
每个提交都有一个哈希值,作为其参考。你可以使用哈希值签出并创建一个新的分支:

显示 Git 中某个提交的参考哈希值的长短版本
不过,如果不知道已删除分支的哈希值,可以使用 reflog 命令。这些 “reference logs” 很像一些本地开发工具等应用中的日志。
虽然使用 git reflog 完全是另一篇文章的话题,但你可以使用基本功能来查找旧提交的哈希值。运行 git reflog ,你会看到一个提交列表:

运行 git reflog 命令并输出结果的终端窗口
通过之一列哈希值,您可以签出提交并创建一个新分支。例如
git checkout 5744ff6
git branch f9d2db5
不过,在 Git 中恢复已删除的分支并非万无一失。
在某些情况下,reblog 中没有提交,也没有 HEAD 引用。因此,在本地分支上执行 git delete 之前,更好先合并变更,这样才能更安全地处理分支。
在本地分支上执行 git delete 操作时,通常会关联到一个。尤其是在使用 Git 将网站拉到远程服务器的情况下。
不过, 都有删除远程 Git 分支的相同流程。这与其他向上游推送的 *** 类似。
命令如下:
git push remote-name -d remote-branch
对于 remote-name,我们看到的大多数版本库都使用 “origin”。remote-branch 的引用将与本地分支相同(除非你,这超出了本文的讨论范围)。
另外,使用 git branch -a 可以查看所有分支,包括本地和远程分支。如果只想看远程分支,可以用 git branch -r 。
运行该命令后,你会看到一条确认信息,这时你应该再运行一次 git branch -a ,检查是否如你所料删除了所有分支。
是为数不多的能通过可读、直观的命令为你提供强大功能的工具之一。这同样适用于删除本地机器上不再需要的分支。不过,在本地分支上运行 git 删除时仍需谨慎。
因为如果试图删除未合并的变更,要么会出错,要么会删除一些会影响未来项目工作的内容。此外,您还需要删除远程分支。本地和远程版本库都需要你进行良好的内务管理,以保持较高的性能和最小的文件大小。
不久前,PHP 8.0大张旗鼓地发布了。它带来了许多新特性、性能增强和变化——其中最令人兴奋的是新的JIT编译器。 技术世界总是在向前发展,PHP也是如此。 ,包含了几个令人兴奋的特性。它定于今年晚些时候于2021年11月25日发布。 在本文中,我们将详细介绍PHP 8.1将带来哪些新的东...
宝塔面板现在已经成为国内许多站长必备的服务器管理必备工具。相比直接使用SSH+FTP来管理服务器,宝塔面板可以提供可视化管理,包括文件管理、数据库管理、数据备份、SSL配置等等。 如果你希望更简单高效地管理您的网站及服务器,宝塔面板是不错的选择。下面是一些宝塔面板安装及常见问题:...
Linux面板环境安装,主要支持LNMP和LAMP、Tomcat、node.js。不过对于大部分站长来说,主要是LNMP和LAMP两个环境的安装。 LNMP和LAMP两个环境的最大区别是,前者采用Nginx作为Web服务器,后者则采用Apache作为Web服务器。(选择哪个作为您的Web服务器,可...
每台连接到Internet的计算机都有一个Internet协议 (IP) 地址。但是,并非所有IP地址的外观或行为都相同。 如果您使用计算机网络或服务器,了解动态IP和静态IP之间的区别至关重要。通过详细了解每个协议,您可以选择最适合您需求的解决方案。 在本文中,我们将讨论静态和动态IP之间...
宝塔的数据库管理,是基于phpmyadmin管理和新建数据库。其最大的便利性就是类似,通过面板可以快速访问进行管理操作,无需单独访问phpmyadmin的主页。 此外,在宝塔面板进行数据库管理,你也对数据库名、用户名及密码等信息一目了然,及可以对数据库执行快速备份或者导入。 添加数据...
宝塔面板设置主要涉及的是宝塔控制后台自身的参数,包括诸如面板的开关、自动更新及SSL、面板端口设置等。虽然这部分不涉及服务器自身的管理,但对宝塔面板的设置也有其重要。 特别是面板端口、安全入口及面板密码等涉及安全的参数设置。 启动和关闭面板 如果你长时间无需使用到宝塔面板,可以考虑...