git switch 与 git checkout的不同
文章目录
- `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 -c
和git 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 out
和 switch
切换分支方面的不同
既然我们已经有了切换分支的命令,为何这么麻烦再引入一个命令?
- 第一个原因,这样定义更清晰直接。
switch
仅仅用于切换,而check out
是一个很底层的命令,可以完成很多事情。 - 在特定情况下使用
check out
会造成困惑,下边我们来做一个具体的实验
- 首先,我们新建一个名叫
rtklib.h
的分支,然后切换会我们的demo6
分支 - 在
demo6
分支上,我们胡乱做一些修改,现在我们的状态如下,
$ git st -sM src/lambda.cM src/postpos.cM src/rcvraw.cM src/rtklib.h
- 现在我们发现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
这个分支~
如何解决这个困惑
那么我们现在有个分支的名字和一个源文件同名了,这种情况下怎么恢复文件呢,
- 首先我们切换回
demo6
分支
$ git switch demo6
Switched to branch 'demo6'
M src/lambda.c
M src/postpos.c
M src/rcvraw.c
M src/rtklib.h
- 不使用
check out
指令,取而代之,我们使用restore
命令,
$ git restore rtklib.h
- 现在我们看一下状态,
$ git st -sM lambda.cM postpos.cM rcvraw.c
任务完成!
git switch 与 git checkout的不同相关推荐
- Git分支命令git branch、git switch、git checkout的区别
文章目录 分支的创建.删除.切换.查看.重命名.创建+切换 创建本地跟踪分支并从远程分支拉取代码.建立当前分支与指定远程分支的追踪关系 git branch.git switch.git checko ...
- git add . 和 git add * 区别
git add . 会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤; git add * 会忽略.gitignore把任何文件都加入. 一个 .gitignore ...
- 2021 从零开始学Git【新版本Git - 8000字详细介绍】
我写的这篇文章,主要是记录自己的学习过程,也希望帮助读者少踩坑(比如不同版本可能命令不兼容等).本文面向git零基础初学者,建议读者按照文中命令自己全部操作一遍(注意运行环境). 我的运行环境:win ...
- 【Git】Git 分支管理 ( 解决分支合并冲突 | 创建并切换分支 git switch -c feature1 | 修改 feature1 分支并提交 | 修改 master 主版本并提交 )
文章目录 一.创建并切换分支 git switch -c feature1 二.修改 feature1 分支并提交 三.修改 master 主版本并提交 一.创建并切换分支 git switch -c ...
- 【错误记录】Git 使用报错 ( git: ‘switch‘ is not a git command. See ‘git --help‘. )
文章目录 一.报错信息 二.解决方案 一.报错信息 执行 git switch -c feature1 命令 , 创建分支 , 报如下错误 : D:\Git\git-learning-course&g ...
- Git笔记(一)——[commit, checkout]
其实一直觉得自己是会用Git的,毕竟咱也是用Github的人啊!可是三月份找工作时候的一次面试颠覆了我的看法: Q: 用过Git吗?平常怎么用的? A: 用过的,一般就是add,commit,push ...
- git如何查看缓存区文件内容_详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别...
一.可以将git简单的分为三个区域 1.工作区(working directory) 2.暂缓区(stage index) 3.历史记录区(history) 如图: 其中git ...
- Git(8)-- 撤消操作(git commit --amend、git reset 和 git checkout 命令详解)
文章目录 1.撤消操作:`git commit --amend` 实例详解: 2.取消暂存的文件:`git reset` 3.撤消对文件的修改:`git checkout` 超详细 Git 图文版小白 ...
- Git冲突解决: git checkout高级用法
背景 Git冲突的原因,一般是修改了同一个文件导致的,这个文件有可能是别人提交到远程仓库里面,还有就是需要合并这个文件导致的. 解决方法 你确定你需要的是哪个仓库的文件 git checkout -- ...
最新文章
- 写了个Python脚本监控nginx进程
- CentOS 7 下 Zeal 安装
- hdu4950 打怪(简单题目)
- 通过改善架构来提高 ASP.Net 应用程序的性能
- python爬虫----handler和opener
- Backbone事件管理——Backbone.Events模块API结构
- 一到软考网络工程师试题
- ssm+redis 如何更简洁的利用自定义注解+AOP实现redis缓存
- 2006 年100 款最佳安全工具谱
- GGally与pairs相关关系图_史上最全(二)
- Android集成腾讯X5WebView
- 这个开源好用的数据库建模工具,让我眼前一亮
- 关于androidstudio获取shal的总结
- 十年磨一剑:大众凭借电池的革命性突破超越特斯拉
- Windows NT引导过程源代码分析(一)
- openBoard开源白板项目
- attention 文字识别算法_支持40种语言的图片文字识别(OCR)项目
- 【C语言编译器】01程序-编译器-IDE
- Android怎么实现数字增减,Android实现数字跳动效果的TextView方法示例
- 张长水主任当选2018年IEEE Fellow!中国大陆17位当选者清华占了5位 !(附完整名单)