We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
对于经常使用 git 的人来说,很少有机会发现关于 git 的新东西。我最近发现在高级命令列表中增加了 2 个新功能:
为了理解为什么新增这两个命令,我们先回顾一下经常使用的 git checkout 这个命令。
有些新手刚开始使用 git checkout 时会感到困惑。这是因为它造成的结果依赖于传入的参数。
下面我们看一下 git checkout 的几个使用场景
切换本地分支,更准确的说法是,切换 HEAD 指针指向的分支,比如,你可以从 develop 分支切换到 main 分支:
git checkout main
切换 HEAD 指针指向一个特定的 Commit
git checkout f8c540805b7e16753c65619ca3d7514178353f39
恢复文件到上次提交的状态
如果输入的参数是一个文件名而不是分支名或者 commit,它将丢弃你对这个文件的修改并重置到上一次的 commit 版本状态。
git checkout test.text
看到这上面几种行为,你可能会认为它没有任何意义,为什么一个命令做两个不同的动作?如果我们查看 git 文档,我们可以看到命令有一个额外的参数,通常被忽略:
git checkout <tree-ish> -- <pathspec>
什么是 ?它可以表示很多不同的东西,但最常见的是表示提交 commit 值或分支名称。默认情况下,它被认为是当前分支,但它可以是任何其他分支或 commit。例如,如果你在 develops 分支,想要将 test.txt 文件更改为来自 main 分支的版本,你可以这样做:
git checkout main -- test.txt
看到这里,也许事情开始变得有意义了。当你为 git checkout 提供一个分支或 commit 参数时,它会将你的所有文件更改为相应版本中的状态,但如果你也指定了一个文件名,它只会更改该文件的状态以匹配指定的版本。
即使我们现在知道了 git checkout 的多种用法,我们必须承认,它对于新手仍然是困惑的。这就是为什么在 git 的 2.23 版本中,引入了两个新命令来取代旧的 git checkout(它仍然可用,但新使用 git 的人最好从这些命令开始)。它们分别实现了 git 的多种行为中的一种。
可以使用这个命令来在分支或 commit 之间切换
git switch develop
不同于 git checkout 切换 commit 直接提供 commit hash, 使用 switch 切换 commit 时需要加 -d 标志
git switch -d f8c540805b7e16753c65619ca3d7514178353f39
同时切换并新增一个本地分支时需要加 -c 标志
git checkout -b new_branch git switch -c new_branch
可以将文件的状态恢复到指定的 git 版本 (默认为当前分支)
git restore -- test.txt
相比较于 git checkout,这两个命令更加的清晰。
关于这两个命令的更多细节可以在 git 文档中找到:
git switch
git restore
The text was updated successfully, but these errors were encountered:
No branches or pull requests
对于经常使用 git 的人来说,很少有机会发现关于 git 的新东西。我最近发现在高级命令列表中增加了 2 个新功能:
为了理解为什么新增这两个命令,我们先回顾一下经常使用的 git checkout 这个命令。
Git checkout
有些新手刚开始使用 git checkout 时会感到困惑。这是因为它造成的结果依赖于传入的参数。
下面我们看一下 git checkout 的几个使用场景
切换本地分支,更准确的说法是,切换 HEAD 指针指向的分支,比如,你可以从 develop 分支切换到 main 分支:
切换 HEAD 指针指向一个特定的 Commit
恢复文件到上次提交的状态
如果输入的参数是一个文件名而不是分支名或者 commit,它将丢弃你对这个文件的修改并重置到上一次的 commit 版本状态。
看到这上面几种行为,你可能会认为它没有任何意义,为什么一个命令做两个不同的动作?如果我们查看 git 文档,我们可以看到命令有一个额外的参数,通常被忽略:
什么是 ?它可以表示很多不同的东西,但最常见的是表示提交 commit 值或分支名称。默认情况下,它被认为是当前分支,但它可以是任何其他分支或 commit。例如,如果你在 develops 分支,想要将 test.txt 文件更改为来自 main 分支的版本,你可以这样做:
看到这里,也许事情开始变得有意义了。当你为 git checkout 提供一个分支或 commit 参数时,它会将你的所有文件更改为相应版本中的状态,但如果你也指定了一个文件名,它只会更改该文件的状态以匹配指定的版本。
新增的命令
即使我们现在知道了 git checkout 的多种用法,我们必须承认,它对于新手仍然是困惑的。这就是为什么在 git 的 2.23 版本中,引入了两个新命令来取代旧的 git checkout(它仍然可用,但新使用 git 的人最好从这些命令开始)。它们分别实现了 git 的多种行为中的一种。
Switch
可以使用这个命令来在分支或 commit 之间切换
不同于 git checkout 切换 commit 直接提供 commit hash, 使用 switch 切换 commit 时需要加 -d 标志
同时切换并新增一个本地分支时需要加 -c 标志
Restore
可以将文件的状态恢复到指定的 git 版本 (默认为当前分支)
总结
相比较于 git checkout,这两个命令更加的清晰。
关于这两个命令的更多细节可以在 git 文档中找到:
git switch
git restore
The text was updated successfully, but these errors were encountered: