作者:-崔思聪 | 来源:互联网 | 2023-07-08 10:02
切换分支是 git checkout 最常见的功能,这里不做介绍,今天主要介绍下它在撤销文件改动上的应用。
// 放弃单个文件修改,注意不要忘记中间的"--",不写就成了检出分支了
git checkout -- filepathname
// 放弃所有的文件修改
git checkout .
此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改。但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。
回滚至某个 commit 可以使用以下命令:
git chekcout
上面的命令是回滚到工作目录中指定的 commit 上,这是一个 只读 操作,不会影响到当前工作区的状态,它在你查看旧版本的文件时不会损坏你的代码仓库。
通常,HEAD 指向 master 分支或其他本地分支(这时就叫做 attached HEAD 状态),当使用 git checkout 回滚到以前的 commit 时,HEAD 就不再指向某个分支了,而是直接指向一个 commit(这时就叫做 detached HEAD 状态)。
切换到 detached HEAD 状态时,会有一个警告。这个警告是告诉你,你现在做的所有事情与你开发项目的其余工作区是分离的,即所有的改动与本地仓库的任一分支都无关,不会影响到其他的分支的状态。
你可以任意的更改任意的提交,通过切换回分支而不影响任何分支的状态。当你切回分支的时候在这里留下的提交你就相当于放弃了。
可以创建一个新分支来保留所创建的提交,则可以通过在 switch 命令中使用-c来执行此操作:
git switch -c
如果你准备在 detached HEAD 状态下开发新的 feature,将没有任何办法引用到这个 feature。你可以把 detached HEAD 状态看作是正在一个未命名的分支上。你只需要给这个分支命名就可以使用这个 feature 了,然后就可以把这个新分支上的代码合并到其他分支上了,通过命令:
git branch 588f5c0
假设你正在进行一次疯狂的重构,但现在你不确定是否要继续下去。这时你想要看一下开始这次重构之前项目原来的样子,首先你需要查看版本的ID,然后使用 git checkout 切换到这个之前的版本。
git checkout a1e8fb5
这让你的工作区切换到了 a1e8fb5 comimit 的状态。你可以查看文件、编译项目、运行测试用例,甚至编辑文件,完全不用担心丢失项目“当前”的状态,你在这里做的所有修改都不会被保存到项目中。当你想要继续那次疯狂的重构时,你需要回到项目的“当前”状态。
git checkout master