简介
Git存储分为本地文件、暂存区、本地仓库、远程仓库四个部分。
- 本地文件就是
pull
下来的文件 - 文件改动后执行
add
命令会添加到暂存区 - 暂存区的文件
commit
后会进入本地仓库 - 本地仓库
push
后会合并到远程仓库
一、回退
- 场景:客户改了好几个版本,然后说,还是要之前那个吧
- 目的:将代码库回退到某个版本
- 结果:
- 远程代码库回退到指定版本
- 此版本之后的提交记录被清除
- 命令:
# 先回退本地的版本 git reset --hard <目标版本号> # 推送到远程代码库 git push -f
- 补充:版本号可以使用
git log
查看
二、撤销
- 场景:误提交,比如不小心把临时修改的配置提交了,或者把别人的文件删了然后提交了
- 目的:撤销某次提交,不一定是上次提交,也可能隔了几个版本了
- 结果:
- 远程代码库将指定的提交内容重做了,简单说就是删除了这次提交添加的文件,恢复了这次提交删除的文件,ctrl + z了这次提交修改的文件
- 之前的提交记录不会被删除,而是新建了一个提交记录来重置误提交的那次提交记录
- 命令:
git revert -n <版本号> git commit -m "<本次提交的说明>" git push
- 补充:
git commit
时可能会有版本冲突,如何处理见第三节
三、冲突
- 场景:其他人修改了你正在修改的文件,而且比你先推送到了远程代码库,这时你既不能拉取新的代码,也不能推送你的代码
- 目的:成功拉取新的代码,或者在让其他人满意的前提下,顺利推送自己的代码到远程
- 结果:顺利推送/拉取了代码,而且冲突的文件没有只是被简单地覆盖掉
- 命令:
- 提交修改
git commit -m "<本次提交的说明>"
- 拉取
git pull
- 这时候报错了,修改、合并冲突的文件后,再进行一次提交
git commit -m "合并代码"
- 拉取并推送
git pull git push
- 提交修改
- 补充:如果希望远程的版本完全覆盖本地修改,可以使用以下命令组
git reset --hard git pull
四、恢复
- 场景:不小心修改/删除了本地的某个文件
- 目的:想要把它恢复到修改/删除之前的样子
- 结果:删除的文件回来了,修改的文件还原了,此操作不影响远程代码库
- 命令:
# 如果修改/删除的文件已经提交到本地暂存区了,需要先取消暂存 git reset HEAD <需要恢复的文件名> # 然后执行检出命令来恢复文件 git checkout <需要恢复的文件名> # 如果想恢复所有的文件,不需要上面的步骤,直接执行 git reset --hard
- 补充:查看本地暂存区内容可以使用命令
git status -s
,然后看对应文件行的左侧第一个字符,如果为空字符,则代表这个文件你没有提交到暂存区
五、取消
- 取消commit,不取消add,不改动本地代码
git reset --soft HEAD^
- 取消commit,取消add,不改动本地代码
git reset --mixed HEAD^
- 取消commit,取消add,回退本地改动代码
git reset --hard HEAD^
- 注意
- cmd中可能会提示more,这是因为^为换行符,再在后面加一个^就可以了
- HEAD^的意思是上一个版本,也可以写成HEAD~1
- 如果只是提交信息写错了,可以使用 git commit --amend ,修改完保存即可