Forver.微笑

面带微笑未必真的开心,但笑起的那一刻,心中的那些不开心的事已经不重要了~

0%

关于使用git checkout命令的变化记录

最近在命令行使用git命令时,发现了一些重要变化,特此记录。

使用git status时,有如下关于恢复文件的提示

1
2
3
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)

印象中以前git restore处的提示是git checkout

经查阅,这是git的在新版本2.23发布的一个重要变更。

git checkout包含了2个核心功能:一个是分支管理,一个是文件恢复。git checkout命令承载了太多的功能,常常让新手感到困惑。 于是,git社区决定将git checkout拆分为git switch
git restore分别负责相应的功能。git checkout将逐渐退出历史的舞台。

新旧写法比较

分支管理

1
2
3
4
5
6
# 切换分支
git checkout <分支名> # old
git switch <分支名> # new
# 创建并切换到新分支
git checkout -b <分支名> # old
git switch -c <分支名> # new

文件恢复

实际上,2.23版本以前有2种文件恢复方式,分别是git checkoutgit reset

新旧用法如下

1
2
3
4
5
6
# 将文件从暂存区移除,文件内容修改不会被撤销
git reset HEAD <file> # old
git restore --staged <file> #new
# 在文件还没有被加入暂存区时,删除文件修改的内容
git checkout -- <file> # old
git restore <file> # new