文章目录

  • `git switch`切换分支
  • 我们不是已经有`git check out`了么
  • `check out` 和 `switch` 切换分支方面的不同
  • 如何解决这个困惑

git switch切换分支

首先查一下本地分支,当前只有一个分支demo5

$ git br
* demo5

使用git switch可以切换分支,如果加-C可以创建一个分支并切换到新建分支,

$ git switch -c demo6
Switched to a new branch 'demo6'

现在我们查一下本地分支,可以看到我们本地多了一个demo6的分支,并且进行了分支切换

$ git brdemo5
* demo6

我们不是已经有git check out了么

是的在switch出现之前,我们是用check out进行分支切换的,当然现在我们依然还可以使用无所不能的check out进行分支切换。其实,两者在实现分支切换这一功能时,效果几乎是完全相同的。
我们可以使用git branch新建一个分支,可以使用git switch或者git checkout切换分支。当我们需要新建并直接切换到一个新分支时,git switch -cgit check out -b的效果也是一样的。
所以,通常情况下,以下四组指令可以认为是等同的,

git br demo6
git check out demo6
git br demo6
git switch demo6
git check out -b demo6
git switch -c demo6

check outswitch 切换分支方面的不同

既然我们已经有了切换分支的命令,为何这么麻烦再引入一个命令?

  • 第一个原因,这样定义更清晰直接。switch仅仅用于切换,而check out是一个很底层的命令,可以完成很多事情。
  • 在特定情况下使用check out会造成困惑,下边我们来做一个具体的实验
  1. 首先,我们新建一个名叫rtklib.h的分支,然后切换会我们的demo6分支
  2. demo6分支上,我们胡乱做一些修改,现在我们的状态如下,
$ git st -sM src/lambda.cM src/postpos.cM src/rcvraw.cM src/rtklib.h
  1. 现在我们发现rtklib.h的修改完全错乱,根本不用修改这个文件,我们想恢复到以前的状态,于是我们执行以下指令,
$ git co rtklib.h
Switched to branch 'rtklib.h'
M       src/lambda.c
M       src/postpos.c
M       src/rcvraw.c
M       src/rtklib.h

啊,指令没有按照预期执行,而是显示Switched to branch 'rtklib.h',这就表示我们切换到了新的分支,我们确认一下,

$ git brdemo5demo6
* rtklib.h

果然,现在我们已经切换到了rtklib.h这个分支~

如何解决这个困惑

那么我们现在有个分支的名字和一个源文件同名了,这种情况下怎么恢复文件呢,

  1. 首先我们切换回demo6分支
$ git switch demo6
Switched to branch 'demo6'
M       src/lambda.c
M       src/postpos.c
M       src/rcvraw.c
M       src/rtklib.h
  1. 不使用check out指令,取而代之,我们使用restore命令,
    $ git restore rtklib.h
  2. 现在我们看一下状态,
$ git st -sM lambda.cM postpos.cM rcvraw.c

任务完成!

git switch 与 git checkout的不同相关推荐

  1. Git分支命令git branch、git switch、git checkout的区别

    文章目录 分支的创建.删除.切换.查看.重命名.创建+切换 创建本地跟踪分支并从远程分支拉取代码.建立当前分支与指定远程分支的追踪关系 git branch.git switch.git checko ...

  2. git add . 和 git add * 区别

    git add . 会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤; git add * 会忽略.gitignore把任何文件都加入. 一个 .gitignore ...

  3. 2021 从零开始学Git【新版本Git - 8000字详细介绍】

    我写的这篇文章,主要是记录自己的学习过程,也希望帮助读者少踩坑(比如不同版本可能命令不兼容等).本文面向git零基础初学者,建议读者按照文中命令自己全部操作一遍(注意运行环境). 我的运行环境:win ...

  4. 【Git】Git 分支管理 ( 解决分支合并冲突 | 创建并切换分支 git switch -c feature1 | 修改 feature1 分支并提交 | 修改 master 主版本并提交 )

    文章目录 一.创建并切换分支 git switch -c feature1 二.修改 feature1 分支并提交 三.修改 master 主版本并提交 一.创建并切换分支 git switch -c ...

  5. 【错误记录】Git 使用报错 ( git: ‘switch‘ is not a git command. See ‘git --help‘. )

    文章目录 一.报错信息 二.解决方案 一.报错信息 执行 git switch -c feature1 命令 , 创建分支 , 报如下错误 : D:\Git\git-learning-course&g ...

  6. Git笔记(一)——[commit, checkout]

    其实一直觉得自己是会用Git的,毕竟咱也是用Github的人啊!可是三月份找工作时候的一次面试颠覆了我的看法: Q: 用过Git吗?平常怎么用的? A: 用过的,一般就是add,commit,push ...

  7. git如何查看缓存区文件内容_详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别...

    一.可以将git简单的分为三个区域   1.工作区(working directory)    2.暂缓区(stage index)    3.历史记录区(history)    如图: 其中git ...

  8. Git(8)-- 撤消操作(git commit --amend、git reset 和 git checkout 命令详解)

    文章目录 1.撤消操作:`git commit --amend` 实例详解: 2.取消暂存的文件:`git reset` 3.撤消对文件的修改:`git checkout` 超详细 Git 图文版小白 ...

  9. Git冲突解决: git checkout高级用法

    背景 Git冲突的原因,一般是修改了同一个文件导致的,这个文件有可能是别人提交到远程仓库里面,还有就是需要合并这个文件导致的. 解决方法 你确定你需要的是哪个仓库的文件 git checkout -- ...

最新文章

  1. 写了个Python脚本监控nginx进程
  2. CentOS 7 下 Zeal 安装
  3. hdu4950 打怪(简单题目)
  4. 通过改善架构来提高 ASP.Net 应用程序的性能
  5. python爬虫----handler和opener
  6. Backbone事件管理——Backbone.Events模块API结构
  7. 一到软考网络工程师试题
  8. ssm+redis 如何更简洁的利用自定义注解+AOP实现redis缓存
  9. 2006 年100 款最佳安全工具谱
  10. GGally与pairs相关关系图_史上最全(二)
  11. Android集成腾讯X5WebView
  12. 这个开源好用的数据库建模工具,让我眼前一亮
  13. 关于androidstudio获取shal的总结
  14. 十年磨一剑:大众凭借电池的革命性突破超越特斯拉
  15. Windows NT引导过程源代码分析(一)
  16. openBoard开源白板项目
  17. attention 文字识别算法_支持40种语言的图片文字识别(OCR)项目
  18. 【C语言编译器】01程序-编译器-IDE
  19. Android怎么实现数字增减,Android实现数字跳动效果的TextView方法示例
  20. 张长水主任当选2018年IEEE Fellow!中国大陆17位当选者清华占了5位 !(附完整名单)

热门文章

  1. 无线测温模块在轧钢厂的应用
  2. 《Mining Quality Phrases from Massive Text Corpora》论文学习笔记
  3. yolov5模型训练流程
  4. go work 工作区
  5. Java 泛型方法/接口、泛型限定
  6. QTreeWidgetItem设置复选框的禁用状态
  7. mkdir创建目录失败的原因
  8. 02_菜鸟也能懂的 - 音视频基础知识。
  9. 解决:IEDA在plugins里搜不到mybatisx插件
  10. 对数似然函数值/最大近然估计/log likelihood