【日常问题】git工具的使用和switch指令解析

在做往年习题发现了这样一道题,开始判断b是正确的,但是不知道d的具体作用,于是查询相关资料进行了研究。

一.创建分支并切换

    针对该选择题中的b和d指令,我们在本地仓库进行实验。先查询本地分支

确定本地只有B1一个分支后,我们输入B中指令,并再次查询本地分支,可以看到成功创建分支314change,并进行了切换

再测试d中指令,可以看到连提示都和b中指令一致,证明这两者等价。

这两个指令和先用git branch 314change生成分支,再用git switch 和git checkout切换效果也完全一致。那么我们不由提出一个疑问:checkout和switch究竟有什么区别呢?

二.checkout与switch

   (1) 实际上checkout的功能比switch更加强大,当我们用文件名替换checkout后面的分支名或 commit 指针时,文件在工作区的修改将被丢弃,还原到分支中的状态。
    以git checkout -- test.txt指令为例,我们切换到相应分支修改了 test.txt文件后,可以用该指令将文件还原到当前分支最近一次 commit 的状态。

     我们查询git文档时就会发现,最后一行checkout指令有相应参数:git checkout <tree-ish> -- <pathspec>,<tree-ish>常常是commit哈希值或分支名。默认情况下它是当前分支,但它也可以是任何其它分支或 commit。 <pathspec>为指定文件名,所以当我们使用git checkout master -- test.txt指令时,我们就能把当前分支中的 test.txt 文件切换成 main 分支中的版本。

  (2)checkout具有多功能性,这在某些时候反而容易造成令人疑惑的问题,特别是在文件名和分支名重名的时候,于是出现了switch指令--它实际上是checkout功能拆分的产物。

    switch仍然具有切换分支和创造分支的功能,也可以切换到某个 commit 并将它转变为分离HEAD状态,但不能像checkout那样直接使用,需要加上-d参数。

    恢复文件版本的功能则被分担到restore指令,git restore -- test.txt可以把文件恢复到当前分支最近一次commit的状态。

    

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值