如何删除带有未提交工作的分支

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本教程提供了关于删除包含未提交工作的 Git 分支的全面指导,解决了开发人员在管理复杂版本控制场景时面临的常见挑战。通过了解安全的分支删除技术,你将提高 Git 工作流程的效率并防止潜在的数据丢失。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/rm("Remove Files") git/DataManagementGroup -.-> git/reset("Undo Changes") git/DataManagementGroup -.-> git/stash("Save Changes Temporarily") git/DataManagementGroup -.-> git/restore("Revert Files") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/merge("Merge Histories") subgraph Lab Skills git/rm -.-> lab-426174{{"如何删除带有未提交工作的分支"}} git/reset -.-> lab-426174{{"如何删除带有未提交工作的分支"}} git/stash -.-> lab-426174{{"如何删除带有未提交工作的分支"}} git/restore -.-> lab-426174{{"如何删除带有未提交工作的分支"}} git/branch -.-> lab-426174{{"如何删除带有未提交工作的分支"}} git/checkout -.-> lab-426174{{"如何删除带有未提交工作的分支"}} git/merge -.-> lab-426174{{"如何删除带有未提交工作的分支"}} end

Git 分支基础

理解 Git 分支

Git 分支是指向仓库中特定提交的轻量级、可移动指针。它们允许开发人员在不影响主代码库的情况下处理不同的功能或实验。

分支类型

分支类型 描述 使用场景
主分支(Main/Master) 主要开发分支 核心项目代码
功能分支(Feature Branch) 隔离的开发环境 新功能或错误修复
热修复分支(Hotfix Branch) 紧急生产修复 即时关键更新

创建分支

## 创建一个新分支
git branch feature-login

## 切换到新分支
git checkout feature-login

## 创建并切换的简写
git checkout -b feature-payment

分支可视化

gitGraph commit branch feature-branch checkout feature-branch commit commit checkout main merge feature-branch

分支管理命令

## 列出所有本地分支
git branch

## 列出所有远程和本地分支
git branch -a

## 删除一个分支
git branch -d branch-name

## 强制删除未合并的分支
git branch -D branch-name

最佳实践

  • 保持分支生命周期短
  • 使用描述性分支名称
  • 完成后合并或删除分支
  • 始终在功能分支上工作,而不是直接在主分支上

借助 LabEx,你可以在安全、交互式环境中实践这些 Git 分支技术。

处理未提交的工作

理解未提交的更改

当你有未提交的修改时,Git 提供了几种策略来在切换分支或执行其他操作之前管理这些更改。

Git 中的更改状态

状态 描述 需要采取的操作
已暂存(Staged) 已添加到暂存区的更改 准备提交
未暂存(Unstaged) 已修改但未添加的更改 需要执行 git add
未跟踪(Untracked) 不在仓库中的新文件 需要进行跟踪

暂存未提交的工作

## 暂存当前更改
git stash

## 使用描述性消息暂存
git stash save "Work in progress: login feature"

## 列出所有暂存
git stash list

## 应用最新的暂存
git stash apply

## 应用并移除暂存
git stash pop

## 清除所有暂存
git stash clear

暂存工作流程可视化

stateDiagram-v2 [*] --> Working Working --> Stashed : git stash Stashed --> Working : git stash pop Working --> Committed : git commit

在切换分支前处理未提交的更改

## 选项 1:提交更改
git add.
git commit -m "Checkpoint commit"

## 选项 2:暂存更改
git stash

## 选项 3:丢弃更改(谨慎操作!)
git reset --hard HEAD

高级暂存技术

## 从暂存创建一个分支
git stash branch new-branch-name

## 显示暂存内容但不应用
git stash show -p

最佳实践

  • 在切换分支前始终暂存或提交
  • 使用描述性的暂存消息
  • 定期清理暂存
  • 通过使用暂存或提交避免丢失工作

借助 LabEx,你可以在安全、交互式环境中实践这些 Git 暂存技术。

安全删除分支

分支删除场景

了解何时以及如何安全地删除分支对于维护一个干净且有条理的仓库至关重要。

分支删除规则

场景 删除命令 安全级别
已合并分支 git branch -d 安全
未合并分支 git branch -D 有风险
远程分支 git push origin --delete 需谨慎

安全地删除本地分支

## 删除已合并的分支
git branch -d feature - branch

## 在删除前检查合并状态
git branch --merged

## 强制删除未合并的分支
git branch -D feature - branch

分支删除工作流程

stateDiagram-v2 [*] --> BranchExists BranchExists --> Merged : 更改已集成 Merged --> Deletable : git branch -d BranchExists --> Unmerged : 有未决更改 Unmerged --> ForceDeletion : git branch -D

远程分支删除

## 删除远程分支
git push origin --delete feature - branch

## 清理陈旧的远程分支引用
git remote prune origin

防止意外删除

## 保护主分支不被删除
git config --global branch.main.protected true

安全删除检查清单

  1. 确保所有更改都已合并
  2. 确认没有未完成的工作
  3. 确认不再需要该分支
  4. 使用适当的删除命令
  5. 在最终删除前再次检查

错误预防策略

## 列出带有合并状态的分支
git branch -a --merged

## 在删除前备份重要分支
git branch backup - branch

最佳实践

  • 在删除前始终检查分支内容
  • 保持仓库干净且有条理
  • 使用描述性的分支名称
  • 定期清理已合并的分支

借助 LabEx,你可以在可控环境中实践安全的分支删除技术。

总结

掌握带有未提交工作的 Git 分支删除需要精心制定策略并理解版本控制原则。通过应用本教程中讨论的技术,开发人员能够自信地管理其分支工作流程,确保代码完整性,并维护一个干净、有条理的仓库结构。