Switch branches or restore working tree files
切换分支或恢复工作树文件。
# 放弃工作区所有文件的修改git checkout .# 放弃工作区指定文件的修改git checkout <file># 恢复某个提交的指定文件到暂存区和工作区git checkout <commit> <file>
# 切换到指定分支git checkout <branch-name># 切换到上一个分支git checkout -
一般上线之前都会打 tag
,就是为了防止上线后出现问题,方便快速回退到上一版本。下面的命令是回到某一标签下的状态。
git checkout -b <branch_name> <tag_name>
通过如下命令可以创建一个自定义命名的分支,并切换到该分支上。<branch-name>
为分支命名。
# 切换的分支保留提交记录日志git checkout -b <branch-name># 切换的分支重写提交记录日志git checkout --orphan <branch-name>
创建一个命名为 feature_x
的分支,并切换到该分支上。
📍 示例:
git checkout -b feature_x
git checkout <stash@{n}> -- <file-name>
恢复本地工作区文件的撤回。
# 撤回已删除文件 index.mdgit checkout index.md
本地分支拉取之后,由于疏忽被删除,而且本地的分支并没有被同步到远程分支上,此时想要恢复本地分支。
误删的分支为 feature/delete
,使用 git reflog
命令可查看到该仓库下的所有历史操作。
# 查看该仓库所有历史操作git reflog# 语法git checkout -b <branch-name> <commit-id># 示例git checkout -b feature/delete HEAD@{2}
命令执行完成后,分支恢复到 HEAD@{2}
的快照,即从 master
分支拉取 feature/delete
分支的内容,仍然缺少 新增 xxx 文件 的提交,直接将文件内容恢复到最新的提交内容,使用命令 git reset --hard HEAD@{1}
即可实现硬性覆盖本地工作区内容的目的。git reflog
命令获取到的内容为本地仓库所有发生过的变更,可谓恢复利器,既可向前追溯,亦可向后调整,满满的时光追溯器的感觉。