git基础学习参考:Git HEAD、HEAD^和HEAD~1之间的区别是什么|极客教程
git 操作流程图
以上的图对应git的三大件操作:分别是git add,git commit, git push,记住push之前需要先git pull 同步一下远程的分支。
1-1 情况一
注:改动代码文件后,文件还停留在工作区,没有提交到暂存区,对应的是下图所示的阶段,这和时候,代码想要不要,需要使用该命令进行管理:git chaekout -- 文件路径,我修改了当前main文件,添加了一下的文字测试该命令。
git chaekout -- 文件路径【git caeckout -- main.c 】
使用图形化工具进行操作:
重新再文本中添加内容
......
1-2 情况二
文件已经被提交到暂存区,如何回到原来的状态先使用git reset HEAD +路径,然后再使用git checkout "路径",具体操作如下所示:
git reset HEAD main.c
git checkout -- main.c
这个时候看到之前添加的文件没有了
1-3 情况三
如果已经将文件提交到本地仓库git commit -m "提交描述",如果要返回来原来的状态,那么需要使用git rest hard + 提交log/maxed +提交记录 / soft + 提交记录,下面来讲述一下这三者之间的差别
git rest --hard +commit ----> 对应的本地仓库----> 暂存区----> 工作区,三者之间是一致的,一旦回滚到上一个版本,这两个版本之间的代码改动就全部没有了,如果使用git reset --maxted那么代码会被存储在生产基地的,改动的代码还是会存储在工作区中,然后暂存区和本地仓库是没有的,如果使用git rsset --soft 的话会将代码回滚到暂存区这边
接下来实验一下这几个操作:先来第一个操作git reset hard + commit号码(想要回到哪一个版本就是回到哪一个版本提交的号码)
git log 查看体检的commit号码:
可以参考文章:版本回退:git reset --hard命令 - 李小菜丶 - 博客园
将文件一路提交到本地仓库中【git add】,也就是本地码头【git commit】,海外码头【git push】
指令: git reset --hard 59ce3a3
回退版本到提交前的状态: git reset --hard 59ce3a33306015fdd847ea78ce56b0693092dd57
添加的文本不见了
代码的提交记录也不见了!!!
git reset --maxed:还是修改文件给文件添加部分内容,回滚的内容本地仓库,暂存区是没有的但是在工作区中还是有的。使用git status看是红色的可以验证这个操作
git log --oneline 查看历史版本记录
git reflog 查看历史版本记录
# 1.比对工作区与暂存区中文件的差异 git diff readme.txt# 2.比对暂存区与本地版本库中文件的差异 git diff --cached readme.txt
目前可以看到暂时没有差异
回退版本:git reset --maxed + commit-id
git reset --maxed 59ce3a3
git status 查看文件状态,找工作区中是有的,但是在暂存区,本地仓库中是没有的
git reset --soft 会回到暂存区但是本地仓库和工作区是没有的,这里就不做演示了
后面将探索图形化界面的操作方式......