Git学习笔记(二)
本系列学习笔记参考廖雪峰老师的Git教程,地址:https://www.liaoxuefeng.com/wiki/896043488029600
Git学习笔记(一) https://www.cnblogs.com/littlemonsterksn/p/13562632.html
Git学习笔记(二) https://www.cnblogs.com/littlemonsterksn/p/13583004.html
Git学习笔记(三) https://www.cnblogs.com/littlemonsterksn/p/13583197.html
Git学习笔记(四) https://www.cnblogs.com/littlemonsterksn/p/13593841.html
Git学习笔记(五) https://www.cnblogs.com/littlemonsterksn/p/13598243.html
六、修改
提交第二次修改:第一次修改 -> git add -> 第二次修改 -> git add -> git commit
git checkout 可以用来新建或者切换分支,也可以用来回退文件版本
从 Git 2.23 版本开始引入了两个新的命令:git switch 用来切换分支,git restore用来还原工作区的文件
git restore 这个命令是 Git 2.23 版本之后新加的,用来分担之前 git checkout 命令的功能,作用就是用暂存区或者版本库中的文件覆盖本地文件的修改可以达到回退修改的目的,同时也可以使用版本库中的文件覆盖暂存区的文件,达到回退git add 命令的目的。 注意,这个操作是不会影响分支记录的,就是相当于之前的 git checkout 命令重新检出一份文件来覆盖本地的修改。
七、撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file
新增一行,如下图:
用git status查看状态
用git checkout -- file (或git restore -- file)可以丢弃工作区的修改
然后用git status查看状态
查看readme.txt文件内容,已经复原了
$ git checkout -- readme.txt $ git status $ cat readme.txt
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
场景2:当不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区。
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
git reset reset 重新设置的意思,其实就是用来设置分支的头部指向,当进行了一系列的提交之后,忽然发现最近的几次提交有问题,想从提交记录中删除,这是就会用到 git reset 命令,这个命令后面跟 commit id,表示当前分支回退到这个 commit id 对应的状态,之后的日志记录被删除,工作区中的文件状态根据参数的不同会恢复到不同的状态。 --soft: 被回退的那些版本的修改会被放在暂存区,可以再次提交。 --mixed: 默认选项,被回退的那些版本的修改会放在工作目录,可以先加到暂存区,然后再提交。 --hard: 被回退的那些版本的修改会直接舍弃,好像它们没有来过一样。
这样来看,git set 命令好像是用来回退版本的,但是如果使用 git rest HEAD file_name 命令就可以将一个文件回退到 HEAD 指向版本所对应的状态,其实就是当前版本库中的状态,也就相当于还原了本地的修改。
八、删除文件
1. 从版本库中删除文件
先删工作区的文件
用git status查看,会看到哪些文件被删除了
从版本库中删除文件,用git rm删除,并且git commit
这样文件就从版本库中删除了
2. 误删文件和恢复
误删了文件。但因为版本库里还有,所以可以把误删的文件恢复到最新版本
用git checkout -- <file_name> (或git restore -- <file_name>),把版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”