Git 新手必读:为何新版本推荐使用 Switch 而非 Checkout 进行分支切换

引言

在版本控制系统 Git中,分支管理是开发流程中不可或缺的一部分,而git checkoutgit switch正是实现分支切换这一核心操作的两大工具。尽管两者在功能上有一定的相似性,特别是在创建和切换分支时,但Git在2.23版本引入git switch的目的正是为了改善用户体验,提高命令的语义清晰度和安全性。

为什么推荐使用 git switch 而非 git checkout 进行分支切换呢

  1. 明确的目的性:

    • git checkout 命令原本用于完成三个不同的任务:切换分支、检出某个特定提交或者恢复工作目录文件。这种多功能性有时会导致混淆,特别是对于新手用户。
    • git switch 命令专注于分支切换这一单一任务,使得意图更加清晰。
  2. 避免意外修改:

    • 在旧版 git checkout 中,如果不小心在工作目录中有未暂存改动的情况下切换分支,可能会丢失这些改动,因为 Git 会自动重置工作目录到目标分支的状态。
    • git switch 默认不会允许在有未提交更改的情况下切换分支,除非显式加上 -m--merge 参数来尝试合并本地更改,或者 -f--force 参数强制覆盖。
  3. 一致性与用户体验:

    • git switchgit restore 命令是在 Git 2.23 版本后引入的,它们分别负责分支切换和文件还原,这使得 Git 的命令集更加一致和易于理解。
    • 用户体验得到了改善,因为开发者不需要记忆 git checkout 的各种行为差异,而是可以根据命令名字直观地了解其功能。
  4. 简化命令行选项:

    • 创建并切换分支的操作,之前需要用 git checkout -b 实现,现在可以直接通过 git switch -c 完成,二者功能相同,但是后者更加符合命令逻辑。
  5. 友好错误提示:

    • git switch在处理不可行的分支切换时,提供的错误信息更加清晰和友好,可以帮助开发者更快识别问题并采取正确的行动。

总结来说,git switch 是为了提升易用性和减少潜在错误而推出的专门用于分支切换的新命令,它旨在提供一种更为安全、更专注且更易于理解的方式来管理 Git 分支。

应用场景

git checkout命令

git checkout 是一个全能型命令,过去不仅用于切换分支,还包括恢复工作目录文件到特定版本以及创建新分支并立即切换到该分支等功能。例如:

1.分支切换

使用 git checkout <branch-name> 命令可以快速切换到目标分支。

bash 复制代码
#将当前分支切换到名为 main 的分支
git checkout main 

2.创建新分支

使用 git checkout -b <new-branch-name> 命令可以快速创建并切换到新分支。

bash 复制代码
#将创建一个名为 feature-branch 的新分支,并立即切换到该分支
git checkout -b feature-branch 

3.撤销修改

有时候我们可能会误修改了某些文件,需要将其还原到之前的状态,这时候就可以使用 git checkout 命令来撤销修改。使用 git checkout -- <file> 命令可以将指定文件还原到最近一次提交的状态。

bash 复制代码
# 将还原 index.html 文件到最近一次提交的状态
git checkout -- index.html 

4.切换提交版本

使用 git checkout <commit-id> 命令可以切换到指定的提交版本。

bash 复制代码
# 将切换到提交 ID 为 abc123 的版本
git checkout abc123 

5.还原文件到指定版本

有时候我们可能需要将某个文件还原到指定的提交版本,而不影响其他文件的状态。 使用 git checkout <commit-id> -- <file> 命令可以将指定文件还原到指定的提交版本。

bash 复制代码
# 将 index.html 文件还原到提交 ID 为 abc123 的版本
git checkout abc123 -- index.html 

git switch命令

git switch 是一个新引入的命令,用于切换分支。与传统的 git checkout 相比,git switch 更加专注于分支切换操作,具有更清晰明了的命令用法。

1.分支切换

使用 git switch <branch-name> 命令可以快速切换到目标分支。

bash 复制代码
# 将当前分支切换到名为 main 的分支。
git switch main 

2.创建新分支

使用 git switch -c <new-branch-name> 命令可以快速创建并切换到新分支。

bash 复制代码
# 将创建一个名为 feature-branch 的新分支,并立即切换到该分支。
git switch -c feature-branch 

3.切换到上次访问的分支

有时候我们可能需要快速切换到上次访问的分支,而不需要记住分支名。使用 git switch - 命令可以快速切换到上次访问的分支。

bash 复制代码
# 切换到上次访问的分支。
git switch -

写在最后

通过使用 git switch 而非 git checkout 进行分支切换,我们可以提升分支操作的清晰度和安全性。作为新手,建议尽早熟悉并掌握新版本推荐的分支切换命令,以提高代码管理的效率和质量。

喜欢的话帮忙点个赞 + 关注吧,将持续更新 Git 相关的文章,还可以关注我的公众号 梁三石FE ,感谢您的关注~

相关推荐
斌斌_____8 分钟前
Spring Boot 配置文件的加载顺序
java·spring boot·后端
路在脚下@17 分钟前
Spring如何处理循环依赖
java·后端·spring
小白学前端6661 小时前
React Router 深入指南:从入门到进阶
前端·react.js·react
海绵波波1071 小时前
flask后端开发(1):第一个Flask项目
后端·python·flask
web130933203981 小时前
前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案
前端
outstanding木槿1 小时前
react+antd的Table组件编辑单元格
前端·javascript·react.js·前端框架
小奏技术2 小时前
RocketMQ结合源码告诉你消息量大为啥不需要手动压缩消息
后端·消息队列
好名字08212 小时前
前端取Content-Disposition中的filename字段与解码(vue)
前端·javascript·vue.js·前端框架
隐形喷火龙2 小时前
element ui--下拉根据拼音首字母过滤
前端·vue.js·ui
m0_748241122 小时前
Selenium之Web元素定位
前端·selenium·测试工具