git reset 版本回退 git checkout 放弃修改

在学习和熟练使用了git 命令后,接下来就在开发应用中提高自己和团队的开发效率,处理应用场景中的问题。

难免会遇到一些问题:

  1. 比如从昨天晚上提交完后,(一般都是每天晚上做完当天的开发任务提交一次,不然第二天万一忘了昨天写了什么没有提交,还要去回忆昨天的内容),第二天开始coding写了一上午,老大突然这个业务逻辑有问题,或者你发现这样写不对,我的天呐,这个时候还没有git add ,这么行代码,我哪知道我从哪行开始写的,我修改了多少次,你可以一步一步的Ctrl+Z,是不是有点low。我想回到今天刚开始的状态,怎么办呢?这个没有git add,就是在工作区的,可以使用git checkout filename 就好了

  2. 那要是我使用了git add 命令后了,就是加入暂存区了,怎么办呢?可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,就是从暂存区回到工作区,就是撤销了你之前的git add命令。这样文件的状态就进入上一种的情况,我可以使用git checkout filename 。

  3. 已经用 git commit 提交了代码

  4. 使用git reset -h 可以查看git rest 帮助,git reset 有几个参数–mixed (默认) –soft –hard

  5. soft 参数:git reset –soft HEAD~1 或者git reset –soft HEAD^意为将版本库软回退1个版本,所谓软回退表示将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到暂存区 ,就是回到上面第2种情况,这个时候你的修改还在暂存区

  6. 默认的mixed参数:git reset HEAD~1 意为将版本库回退1个版本,将本地版本库的头指针全部重置到指定版本,且会重置暂存区,即这次提交之后的所有变更都移动到未暂存阶段就是工作区git add之前。

  7. hard参数:git reset –hard HEAD~1 意为将版本库回退1个版本,但是不仅仅是将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将工作区代码也回退到这个版本

  8. 。可以使用 git reset –hard HEAD^ 来回退到上一次commit的状态。此命令可以用来回退到任意版本:git reset –hard commitid

你可以使用 git log 命令来查看git的提交历史。git log 的输出如下,之一这里可以看到第一行就是 commitid,git log -3来查看最近三次的提交

你可能感兴趣的:(git)