关于版本回退
### git 关于版本回退
git版本回退
注释:git跟踪并管理的是修改,而非文件
-
当工作区的内容被修改,并未add到暂存区,此时想要丢弃对工作区的修改: git checkout 【--filename】
-
当工作区的内容被修改,并且次修改已经add 至暂存区,此时想要将提交到暂存区的文档回退至工作区:git reset HEAD 【filename】
-
回退后默认工作区还存在对文档的修改,如需丢弃对工作区的修改,则继续键入 : git chekout [--filename]
-
当工作区的内容被修改,并且此修改已经commit到版本库,此时想将修改回退到工作区(前提:未将修改后的版本push到远程仓库,否则无法回退): git reset --hard [commit_id]
//注意:此id指的是需要回退的版本前一个id,并且此操作会把本地的修改记录全部会退掉,因此此操作需谨慎
注释:
-
commit_id 指的是提交git版本id,可通过git log 查看
-
git log 查看提交历史 (被回退掉的历史提交不会被记录,因此需要git reflog 查看被回退的commit _id)
-
git reflog 查看命令历史
常用版本回退指令:
git reset
1. 将提交到暂存区的内容回退到本地并保留 // 即:git add 之后提交到了暂存区,但并未git commit,想要撤销add操作
指令: git reset HEAD //将提交到暂存区的版本回退到本地
2. 将提交到暂存区的内容回退到本地并且本地也放弃修改
指令: git reset --hard HEAD //将提交到暂存区的版本回退到本地,并放弃在本地保存,此操作类似于: git reset HEAD + git checkout 因此带有 --hard 的指令谨慎操作
3.若需要回退的版本是当前分支上的HEAD commit,执行如下命令:
指令:git reset --hard HEAD^
4. git reset commitId :将远程分支的提交记录回退至指定commitId,此commitId 后的每一条修改记录都将被清空,本commitId 记录不会被清楚
git push origin remote / git push -f origin remote 均失败
git push origin remote -f 成功
git revert
//将服务器上的某一笔提交记录回滚
1. git revert commitId 服务器上不做修改,本地删除对应commit id 的修改
2. git revert commitId + git push origin remote ,git revert 后生成一个新的commit id 将此修改git push , 服务器上版本回退