暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

git switch 和 checkout 之间有什么区别?

TIAP 2022-07-20
5511

当我们使用 git 进行协同工作的时候,经常会用到切换分支的情况。

如果你是第一次使用 git 切换分支的话,可能会遇到一些困惑。因为你在网上查到的有关切换分支的例子中,有一些是使用 git switch,还有一些例子是用的 git checkout来进行分支的切换。

看下表:

git checkout
git switch
功能
git checkout my-branch
git switch my-branch
切换到 my-branch 分支
git checkout -b my-branch
git switch -c my-branch
创建并切换到 my-branch 分支

那么,git switch 和 git checkout 的区别是什么呢?如果两个都可以用于切换分支,那么为什么有两个命令用于相同的目的?

今天我们来讨论一下这个问题。


git checkout 和 git switch 的区别

是这样的,git checkout 是用于创建和切换分支的旧命令。它还可以用于恢复来自某个提交的修改。但是 git checkout 能做的不仅仅是这些,它还可以让你从任何分支复制文件或直接提交到当前工作区中,而无需切换分支。

实际上,git checkout 做了三件事情:

1)切换分支;

2)从暂存区复制文件到工作区(放弃当前修改);

3)从其他区复制文件到工作区;


如果你不明白,那没关系,只需要记住:git checkout 能做的不仅仅是分支的切换,还有很多其他额外的功能,而这些额外的功能,增加了 git checkout 这个命令的复杂性。

因此,从 git 2.23 版本发布以后,引入了两个新的命令:git switchgit restore

这样做的目的,是为了让人们使用 git switch 来切换分支,使用 git restore 来撤销本地修改。与此同时,git checkout 仍然被保存,用于提供更高级的选项来处理各种更加复杂的操作。


那么,git checkout 和 git switch 应该使用哪一个呢?

如果是切换分支,请使用 git switch 命令而不是 git checkout。为什么?因为它就是为这个特定任务创建的。对于新的 git 用户,更容易记住 git switch 用于切换分支,git restore 用于恢复修改。

因此,对于切换和创建分支这个操作来说,使用 git switch 命令替代 git checkout 是被提倡的做法。


最后,我们还需要知道的一点是,在创建分支的时候,无论使用的是 git checkout -b 还是 git switch -c,所创建的分支都是在本地仓库中创建的,要将本地创建的分支推送到远程仓库,可使用如下命令:

    git push --set-upstream origin my-branch


    以上就是本次分享全部内容,欢迎讨论。


    文章转载自TIAP,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论