在 Git 中删除已合并的分支
在 Git 中,分支对于与许多团队成员一起工作是必要的。分支代表过去在 Git 中所做更改的快照。
当我们在 Git 中创建一个新分支时,它意味着包含我们为修复错误或添加新功能所做的更改。
通过 Git,我们可以轻松地管理分支,无论是创建分支还是使用命令删除分支。删除分支在 Git 中也不例外。
许多开发人员在通过删除合并的分支来清理他们的 Git 仓库时感到满意,并且他们很容易对现有分支进行新的开发。
让我们看看在 Git 中使用以下命令删除已经合并的分支。
查看 Git 中的现有分支
在我们开始删除仓库中的现有分支之前,让我们通过运行以下命令来查看所有分支列表:
git branch
要查看所有远程分支的列表,我们将运行以下命令:
git branch -r
要查看所有分支(本地和远程)的列表,我们将运行以下命令:
git branch -a
作为这些命令的结果,我们将看到一个分支列表。并非我们可以看到的所有分支都应该被删除。我们的目标是清理已经合并的分支。
要查看所有本地合并分支的列表,我们将运行以下命令:
git branch --merged
要查看所有本地未合并分支的列表,我们将运行以下命令:
git branch --no-merged
在 Git 中一次删除多个本地合并分支
一次删除一个分支更耗时,而且不是正确的工作。当然,我们是开发人员,当我们可以使用一些命令将其机器人化时,我们不喜欢做重复性的任务。
正如我们在合并分支列表中看到的那样,将来可能有一些我们不想删除的分支。所以为了这个目的,我们将在命令中添加一些参数来删除所有合并的分支,以排除我们不想删除的分支。
以下命令将不包括 master
分支,以及其中包含 dev 的任何内容:
git branch --merged| egrep -v "(^\*|master|main|dev)"
如果我们想跳过任何其他分支,我们将添加名称如下:
git branch --merged| egrep -v "(^\*|master|main|dev|skip_branch_name)"
现在,假设我们要删除过去已经合并到当前已签出的仓库分支中的仓库的现有本地分支。在这种情况下,我们将执行以下命令:
git branch --merged | grep -i -v -E "master|dev"| xargs git branch -d
在 Git 中删除本地和远程合并的分支
要删除合并的本地分支,我们将运行带有选项 -d
的 git branch
命令,如下所述。
git branch -d <branch-name>
如果本地分支没有合并,那么我们将运行以下命令:
git branch -D <branch-name>
如果我们想从远程删除它,我们将执行带有选项 --delete
的 git push
命令(这里,远程的名称是 origin,默认情况下):
git push --delete origin <branch-name>
或者,我们也可以使用以下命令:
git push origin :<branch-name>
从远程删除分支后,我们将使用以下命令修剪以消除远程跟踪分支:
git remote prune origin
单独地,我们还可以使用以下命令修剪远程跟踪分支:
git branch -dr <branch-name>