工具系列 | git checkout 可替换命令 git switch 和 git restore
前言
git checkout 这个命令承担了太多职责,既被用来切换分支,又被用来恢复工作区文件,对用户造成了很大的认知负担。
Git社区发布了Git的新版本2.23。在该版本中,有一个特性非常引人瞩目,就是新版本的Git引入了两个新命令 git switch 和 git restore,用以替代现在的 git checkout。换言之,git checkout 将逐渐退出历史舞台。
Git社区决定这样做,是因为目前 git checkout 命令承载了太多的功能,这让新手们感到困惑。git checkout 的核心功能包括两个方面,一个是分支的管理,一个是文件的恢复。这两个核心功能,未来将由 git switch 和 git restore 分别负责。
相比之下,新命令旨在将职责明确分为两个较窄的类别:更改分支的操作和更改文件的操作。为此,请照顾前者和后者。为了我们的目的,让我们更详细地了解每个。git checkoutgit switchgit restore
案例比较
1、分支管理
在分支管理方面,目前切换分支以及创建分支,是使用
git checkout <分支名> 和 git checkout -b <分支名>
有了 git switch 之后,对应的命令分别为
git switch <分支名> 和 git switch -c <分支名>
最简单的调用如下所示:git switch
$ git switch my-feature Switched to branch 'my-feature' Your branch is up to date with 'origin/my-feature'
在这种模式下,您可以将其视为类似于的无选择调用。如果要替换(或简称,),可以编写:git switchgit checkoutgit checkout --branchgit checkout -b
创建并且切换新分支
Tinywan@DESKTOP-TEDEO2S MINGW64 /d//wiot.tinywan.com (master)
$ git switch -c my-new-feature
Switched to a new branch 'my-new-feature' Tinywan@DESKTOP-TEDEO2S MINGW64 /d/wiot.tinywan.com (my-new-feature)
$ git branch
这里是短期的,并可以取代你的肌肉记忆。或者,从指定的提交开始(而不是分支当前已检出的提交):-c--creategit checkout -b
$ git switch -c my-new-feature 0810beaed7 Switched to a new branch 'my-new-feature'
该文档中还有其他一些示例,包括上述更多示例以及有关如何设置跟踪分支,孤立分支等的一些示例。
2、文件恢复
git restore另一方面,它使确定要更改的文件,要更改的文件以及更改的位置变得容易得多。除了记住的纠结语义外,还提供了两个选项来指定还原的更改将移至何处。如果您通过(或完全不通过任何操作),则更改将进入您的工作副本。如果通过,它们将进入您的索引。最后,如果您同时通过了两者,则两者都将更改为相同的内容。git checkoutgit restore--worktree--staged
git restore还可以通过可选选项更轻松地了解要还原的内容来自何处。如果未指定,则从登台区域还原内容,否则,从特定树还原它们。注意:和之间的另一个区别是,默认为和将删除源树中不存在的跟踪文件。请参阅我们的2.22博客文章中的讨论。 --source--sourcegit checkoutgit restorerestore--no-overlay--overlay
例如,如果我希望文件在工作副本和索引中的内容都与三次提交之前相同,则可以这样写:main.c
$ git restore --source HEAD~3 --staged --worktree main.c
……更改将完全适用。的新文档中git restore还有更多示例。
小结
该文档中还有其他一些示例,包括上述更多示例以及有关如何设置跟踪分支,孤立分支等的一些示例。
git restore另一方面,它使确定要更改的文件,要更改的文件以及更改的位置变得容易得多。除了记住的纠结语义外,还提供了两个选项来指定还原的更改将移至何处。如果您通过(或完全不通过任何操作),则更改将进入您的工作副本。如果通过,它们将进入您的索引。最后,如果您同时通过了两者,则两者都将更改为相同的内容。
git checkoutgit restore--worktree--staged
工具系列 | git checkout 可替换命令 git switch 和 git restore的更多相关文章
- 【Git】时光机命令—Git命令
cd c: 进入C盘 mkdir learngit 创建名为learngit的文件夹 cd learngit 进入learngit文件夹 pwd 显示当前目录路径 gi ...
- Git CMD - checkout: Switch branches or restore working tree files
命令格式 git checkout [-q] [-f] [-m] [<branch>] git checkout [-q] [-f] [-m] --detach [<branch&g ...
- git工具使用方法及常用命令
git下载地址:https://git-for-windows.github.io/git环境变量配置:增加:GIT_HOME = C:\Git (文件夹为git软件的安装文件夹)Path添加: %G ...
- git之命令git checkout
git checkout 最常用的就是切换分支,最近又发现一种新的用法: 有时候,在看代码的时候,不小心改动了部分代码,但跟项目没啥关系,这个时候,想不去提交这些代码,怎么处理呢? 使用git che ...
- git workflow常用命令
git init git status git add readme.txt git add --all Adds all new or modified files git comm ...
- git链接GitHub命令及基本操作
Git是一款不错的代码管理工具,下面引用百科的一段话: Git是用于Linux内核开发的版本控制工具.与CVS.Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服 ...
- Git 与 SVN 命令学习笔记
一:Git git config --global user.name "you name" #设置用户名git config --global user.email &quo ...
- git初学 常用命令
初学备忘: MAC 下 clone 项目的时候 记得 sudo -s 输入密码 获得 管理员权限,普通权限看不到 .babelrc 等 点开头的文件 ____——____——____——____ ...
- Git 基础 —— 常用命令
Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 git init 创建 Git ...
随机推荐
- [大数据技术]datax的安装以及使用
1.datax简述 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.Ta ...
- [CF1311F] Moving Points - 树状数组
Solution 按 \(x\) 关键字升序排序,依次枚举每个点 考虑对任意 \(x_j < x_i\),那么当 \(v_j \leq v_i\) 时,它们不会相交,且 \(dis\) 就是它们 ...
- Python_3
""" Function_1: 寻找水仙花数. 水仙花数也被称为超完全数字不变数.自恋数.自幂数.阿姆斯特朗数, 它是一个3位数,该数字每个位上数字的立方之和正好等于它本 ...
- Uva1660 (点联通度、边联通度问题)
题意: 给定一个n(n<=50)的无向图,问最小删去几个点,可以使得这个图不连通 解法: 1. 基本概念 (1)一个具有 N 个顶点的图,在去掉任意 K-1 个顶点后 (1<=K&l ...
- javascript当中arguments用法
8)arguments 例 3.8.1<head> <meta http-equiv="content-type" content="text/h ...
- 谷歌浏览器chrome应用商店无法打开的解决方法
解决办法:谷歌访问助手 谷歌访问助手是一款免费的谷歌服务代理插件,不用配置就可以正常访问谷歌的大部分服务,而且速度也很快.下载地址:http://www.cnplugins.com/advsearch ...
- vue组件之间传值
父组件向子组件传值 父组件可以在引用子组件时,通过属性绑定(v-bind:)的形式,把数据传递给子组件.在子组件的props中定义后即可使用数据 <div id="app"& ...
- Android 开发调试最优选项
1 开发环境 VS2019 16.4.5 2 开发调试选项 Android 选项
- 咸鱼的ACM之路:动态规划(DP)学习记录
按挑战程序设计竞赛介绍的顺序记录一遍学习DP的过程. 1. 01背包问题 问题如下: 有N个物品,每个物品(N[i])都有一定的体积(W[i]),和一定的价值(V[i]) 现在给定一个背包,背包的容量 ...
- 虚拟机出问题 Oh no,something has gone wrong! 解决方法
系统出错时ctrl+alt+F2 进入命令模式root输入密码yum update...等待输入 y...等待终于好了