在版本管理中,最常用和最重要的是重置提交的版本,恢复后悔做了的事。大家都知道用reset命令。但是有几种形态需要整理共享一下,也方便我自己查阅。...二、reset soft(更改HEAD)(恢复git commit的操作) 软重置。...本来origin的HEAD和本地的HEAD一样,如果你指定--soft参数,Git只是单纯的把本地HEAD更改到你指定的版本那么,整个过程中,就HEAD的定义发生了变化,其他像Working Copy...2.hard(更改三者) --hard参数将会将会重置(HEAD,INDEX(STAGING),WORKING COPY),强制一致。...1、soft: 重置git commit 2、mixed: 重置git commit 和 git add 3、hard: 重置git commit 和 git add 和工作副本的修改。
聊聊 git 中 detached HEAD、amend、rebase 和 reset 分离头导致 commit 丢失 分离头是指 checkout 历史版本后,做了修改并提交 commit,这时切回别的分支...查看提交记录 git log --oneline 可以看到有两个提交记录 7c53c63 (HEAD -> master) 创建文件 c034a61 init 这时 checkout 到历史版本 Note...HEAD 和 HEAD 的上上个版本的比较,等同于 git diff HEAD HEAD^1^1 也等同于 git diff HEAD HEAD~2 所以你以为有 git diff HEAD HEAD...init server app 合并 如果有冲突那么解决冲突然后 rebase --continue 或放弃 rebase --abort checkout、clean 和 reset 的回退 checkout...和 reset 都是用于恢复文件的,但两者的区别是 checkout 是恢复工作区的,reset 则是恢复暂存区到工作区的。
2.执行git reset --hard xxxx xxxx表示的是commit hash 值。...直接执行: git reset --hard 275a66e559ebfe9dafee31f297096bffddc1f964 3.git push -f 第二步只是回滚了本地的代码,也就是自己的workspace
提交分3步:add、commit、push,回滚和撤销也分3种情况: 撤销add 撤销commit 回滚push,也就是回滚远程仓库的代码 撤销add 这种情况有可能是在 git add 操作的时候一些不必要的文件也加进来了...//删除暂存区中的文件记录 git rm --cached 文件名 //或是下面的命令,推荐用下面这种 git reset HEAD 文件名 上面2种方法有什么区别呢?...只不过有个问题,暂存区中的内容和工作区中的内容要不要跟着改呢?...Git可以让我们自己选——分别对应reset 的3个参数:mixed、soft和hard mixed:这个是默认值,效果是暂存区的内容会被替换,工作区的内容不变(也就是撤销commit,同时撤销add,...reset --hard HEAD^ //或者 git reset HEAD^ --hard PS:如果只是想修改刚刚commit时写的提交备注,不用 reset,可以用下面的命令: //修改最新一次提交的说明信息
在diff后边加HEAD也可以查看不同 上面有三个查看修改状态,到底有什么区别呢?...可以实现的命令比较多 回到上一个版本:git reset --hard HEAD^ 回到上上个版本:git reset --hard HEAD^^ 回到上上个版本:git reset --hard HEAD...~2 回到前100个版本:git reset --hard HEAD~100 或者使用id号码进行退回,这里需要查看对应版本的id号码 git reset --hard 3ccb20c 情况四: 现在退回到过去的版本了...git reset 当前文件名称 情况三:把修改后的文件已经add和commit操作了,如何返回上一个版本或者指定版本 git reset --hard HEAD^ #回到上一个版本...git reset --hard HEAD^^ #回到上上个版本 git reset --hard HEAD~2 #回到上上个版本 git reset --hard HEAD
命令行 SourceTree SmartGit git add 和git stage有什么区别 Git仓库的三个组成部分:工作区(Working Directory)、暂存区(Stage)、历史记录区(...git reset 、git revert和git checkout 有什么区别? 共同点:用来撤销代码仓库中的某些更改。 不同点 git reset可以将一个分支的末端指向前一个commit。...--hard:影响工作区,暂存区和历史记录区。 注意,因为git reset是直接删除commit记录,从而会影响其他开发人员的分支,所以不要在公共分支做这个操作。...git checkout 可以将HEAD移到一个新的分支,并更新工作目录。以为可能会覆盖本地的修改,所以执行这个指令之前,你需要stash或者commit暂存区和工作区的更改。...然后从文件的层面来说: git reset 只是把文件从历史记录区拿到暂存区,不影响工作区的内容,而且不支持 --mixed、--soft 和 --hard。
git reset --hard HEAD^是向前回退版本,其中HEAD后面跟几个^就是往回退几个版本,如果回退100个版本,可以写成 HEAD~100 。...git reset有三种模式,soft,mixed,hard,具体的使用方法下面这张图,展示的很全面了。...1. git reset 语法 命令格式:git reset [--soft | --mixed | --hard] [] 1.1 使用参数--hard,如git reset --hard...而 reset --hard HEAD^ 之所以起到了撤销 commit 的效果,是因为它把 HEAD 和它所指向的 branch 一起移动到了当前 commit 的父 commit 上,从而起到了「撤销...所以同理,reset --hard 不仅可以撤销提交,还可以用来把 HEAD 和 branch 移动到其他的任何地方。 git reset --hard branch2
本地库版本管理 reset 2.1 reset 操作 HEAD 指针的三种方式 版本的前进后退本质是 HEAD 指针的移动,有三种移动指针进行版本控制的方式:索引、^、~。 # 1....使用^符号后退指定步数 $ git reset --hard HEAD^ $ git reset --hard HEAD^^^ # 后退3步 # 3....同时 reset 命令有三个参数,对应三个恢复等级:--soft、--mixed、--hard。 2.2 --soft 本地库移动 HEAD 指针,暂存区和工作区内容不变。...如下图,硬重置不保留已提交的修改,直接将当前分支的状态恢复到某个特定提交下,同时将当前工作区和暂存区中的文件全部移除。 [reset-hard.gif] 3....的 hard 参数重置 HEAD 指针到最新记录,刷新暂存区和工作区状态,找回版本库中的删除文件 # 删除操作已提交到本地库 $ git reset --hard [历史记录指针位置] # 删除操作尚未提交到本地库
git reset --hard HEAD^ 这里误操作了也不用怕,可以恢复的,下面会讲。...--merge 重置索引并更新工作树中在 和 HEAD 之间不同的文件,但保留那些在索引和工作树之间不同的文件(即那些有未被添加的修改)。...如果一个在 和索引之间不同的文件有未分阶段的变化,重置将被中止。...如果一个在 和 HEAD 之间不同的文件有本地修改,重置将被中止。...在 Git 中,总是有后悔药可以吃的。当你用 $ git reset --hard HEAD^^ 回退过头了,再想恢复到最近一次提交,就必须找到这次提交的的 commit id 。
到底Git和GitHub有什么区别呢?...git reset 命令语法格式具体如下: git reset [--soft | --mixed | --hard] [HEAD] --mixed是默认参数,可以不带,用于重置暂存区的文件与上一次的提交...⚠️谨慎使用 --hard 参数,它会删除回退点之前的所有信息 git reset --hard HEAD~3 # 回退到上上上个版本 git reset --hard 1de43 # 回退到指定版本...git reset --hard origin/master # 本地状态回退到和远程相同 HEAD git reset HEAD^ # 回退到所有内容的上一个版本 git reset HEAD...git reset --hard commit_id。
如下图 命令语法格式如下: git reset [--soft | --mixed | --hard] [HEAD] 其中,HEAD对应的值和git revert指令一样,可以使用多个^符号,也可以使用...该指令有几个模式,分别是mixed、soft、hard。 --mixed 为默认,可以不用带该参数,用于重置版本库中的文件与某一次的提交(commit)保持一致,工作区文件内容保持不变。...如下示例 $git reset --soft HEAD^2 # 重置上上个版本 --hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交。...如下示例 $git reset –hard HEAD^3 # 重置上上上一个版本 $git reset –hard bae128 # 重置到某个版本。...$git reset --hard origin/master # 将本地版本的状态重置到和远程的一样 注意:谨慎使用 –hard 参数,它会删除重置点之前的所有信息。
git reset [–hard|soft|mixed|merge|keep] [或HEAD]:将当前的分支重设(reset)到指定的或者HEAD(默认,如果不显示指定...commit,默认是HEAD,即最新的一次提交),并且根据[mode]有可能更新index和working directory。...mode的取值可以是hard、soft、mixed、merged、keep。下面来详细说明每种模式的意义和效果。...查看提交历史 git log commit 3 commit 2 commit 1 执行 git reset –hard HEAD~1 或者git reset –hard HEAD^ 再执行...git log commit 2 commit 1 git status没有任何内容 git reset –soft HEAD~1 git status会显示上次提交的文件 如果–hard回滚之后需强制推才可以
git revert 和 git reset 的区别 先看图: sourceTree 中 revert 译为提交回滚,作用为忽略你指定的版本,然后提交一个新的版本。...reset 为 重置到这次提交,将内容重置到指定的版本。git reset 命令后面是需要加2种参数的:–-hard 和 –-soft。这条命令默认情况下是 -–soft。...代码回退 默认参数 -soft,所有commit的修改都会退回到git缓冲区 参数--hard,所有commit的修改直接丢弃 $ git reset --hard HEAD^ 回退到上个版本...$ git reset --hard commit_id 退到/进到 指定commit_id 推送到远程 $ git push origin HEAD --force 可以吃的后悔药->版本穿梭...3}: reset: moving to 470e9c2 2c26183 HEAD@{4}: reset: moving to 2c26183 0f67bb7 HEAD@{5}: revert: Revert
git revert 和 git reset 的区别 sourceTree 中 revert 译为提交回滚,作用为忽略你指定的版本,然后提交一个新的版本。新的版本中已近删除了你所指定的版本。...reset 为 重置到这次提交,将内容重置到指定的版本。git reset 命令后面是需要加2种参数的:–-hard 和 –-soft。这条命令默认情况下是 -–soft。...代码回退 默认参数 -soft,所有commit的修改都会退回到git缓冲区 参数--hard,所有commit的修改直接丢弃 $ git reset --hard HEAD^ 回退到上个版本...$ git reset --hard commit_id 退到/进到 指定commit_id 推送到远程 $ git push origin HEAD --force 可以吃的后悔药->版本穿梭...3}: reset: moving to 470e9c2 2c26183 HEAD@{4}: reset: moving to 2c26183 0f67bb7 HEAD@{5}: revert: Revert
------------------------------------------------------------------------------- 5.在git的版本管理中,有一个叫做`HEAD...--hard命令回退/切换到某个历史版本; 3.git reset --hard 命令会重置 本地仓库、暂存区和工作区,三者的状态保持一致!...版本回退/切换的命令: 1.git reset --hard [索引值] : 可切换到任意版本[推荐使用这个方式] 2.git reset --hard HEAD^ : 只能后退,一个 ^ 表示回退一个版本...依次类推 3.git reset --hard HEAD~n :只能后退,n表示后退n个版本 3.1 git reset –hard HEAD^ ^ : 一个^ 表示回退一个版本; 两个^表示回退两个版本...n个^表示回退n个版本 下面看一下具体的操作: 1.当前的版本及文件数据: 2.回退到上一个版本 3.2 git reset –hard HEAD~n ~n : 表示直接回退到 n 个版本; 是
到底Git和GitHub有什么区别呢?...git reset 命令语法格式具体如下: git reset [--soft | --mixed | --hard] [HEAD] --mixed是默认参数,可以不带,用于重置暂存区的文件与上一次的提交...⚠️谨慎使用--hard 参数,它会删除回退点之前的所有信息 git reset --hard HEAD~3 # 回退到上上上个版本 git reset --hard 1de43 # 回退到指定版本...git reset --hard origin/master # 本地状态回退到和远程相同 HEAD git reset HEAD^ # 回退到所有内容的上一个版本 git reset HEAD...1 上一个版本 HEAD^2 上上一个版本 HEAD^3 上上上一个版本 以此类推… 总结 HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard
重置 git commit、git add git reset --mixed [commit id] 指针移动的同时,重置暂存区和工作区。...重置 git commit、git add 和工作副本的修改 git reset --hard [commit id]] 使用示例: 回退到指定版本 # 命令格式 git reset --hard hard 参数会重置 commit 和 add ,也会重置工作区副本的修改 其实就是在 --mixed 参数的基础上,又重置了文件的修改。...HEAD 的用法 ---- 回退到当前版本,下面两种用法等价 (放弃所有修改) git reset --hard git reset --hard HEAD 回退到上一个版本 git reset --hard...HEAD^ 回退到上上一个版本 git reset --hard HEAD^^ 5.
--hard / # 将本地的状态回退到和远程的一样 git pull # 远程获取代码并合并本地的版本 9.git reset参数含义图解...git reset 命令语法格式如下: git reset [--soft | --mixed | --hard] [HEAD] **--mixed** 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交...$ git reset --soft HEAD~3 # 回退上上上一个版本 **--hard** 参数**撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交...**: git reset --hard HEAD $ git reset –hard HEAD~3 # 回退上上上一个版本 $ git reset –hard bae128 # 回退到某个版本回退点之前的所有信息...$ git reset --hard origin/master # 将本地的状态回退到和远程的一样 10.git push免密 (1) 查看通信方式 git remote -v (2) 如果是
到底Git和GitHub有什么区别呢?...git reset 命令语法格式具体如下: git reset [--soft | --mixed | --hard] [HEAD] --mixed是默认参数,可以不带,用于重置暂存区的文件与上一次的提交...⚠️谨慎使用--hard 参数,它会删除回退点之前的所有信息 git reset --hard HEAD~3 # 回退到上上上个版本 git reset --hard 1de43 # 回退到指定版本...git reset --hard origin/master # 本地状态回退到和远程相同 HEAD git reset HEAD^ # 回退到所有内容的上一个版本 git reset HEAD...总结 HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
领取专属 10元无门槛券
手把手带您无忧上云