git checkout是令人困惑的众多原因之一。那是因为它的效果是依赖于上下文的。
例如,develop如果您在分支上,则可以切换到main分支:
git checkout develop
你也可以让你的 HEAD 指针引用一个特定的提交而不是一个分支:
git checkout f8c540805b7e16753c65619ca3d7514178353f39
如果您提供一个文件作为参数而不是分支或提交,它将放弃对该文件的本地更改并将其恢复到分支状态。
例如,如果你对 test.txt 文件进行了一些更改,那么您可以使用以下命令将文件恢复为分支的最新提交:
git checkout -- test.txt
如果我们查看git 文档,我们可以看到该命令有一个通常被省略的额外参数:
git checkout <tree-ish> -- <pathspec>