Git - 回滚与撤销
必要的概念
- 当前编辑界面:工作区(workspace)
- “git add”命令:将改动加入到缓存区(Index)
- ”git commit”命令:提交代码到本地库(Local Repository)
- ”git push”命令:提交代码到远程库(Remote Repository)
未使用“git add”命令缓存代码时
git checkout
git checkout -- <filepathname> # 丢弃工作区某个文件的修改
git checkout . # 丢弃工作区所有文件的修改
注意:此命令不会删除掉新建的文件,需要手动删除。
已使用“git add”命令缓存代码
git reset
git reset HEAD <filepathname> # 撤销暂存区某个文件的修改,重新放回工作区
git reset HEAD . # 撤销暂存区所有文件的修改,重新放回工作区
注意:相当于撤销“git add”命令,但只是将本地的修改从暂存区回退到工作区。
已使用“git commit”命令提交代码
git reset
git reset --hard HEAD^ <filepathname> // 回退某个文件到上一次commit的状态
git reset --hard HEAD^ // 回退所有文件到上一次commit的状态
git reset --hard <commit id> // 回退所有文件到某个commit
git commit --amend
重做上一次commit,并包括指定文件的新变化。
合并缓存区的修改和最近的一次commit,并尝试重新commit。可以理解为,用一个全新的commit整个替换了最近一次commit。
如果缓存区没有内容, 可以用来编辑上一次的commit描述。
不要对一个公共的commit使用amend。如果amend了一个被其他开发者使用的commit, 可能会严重影响其他开发者。
git rebase
重新定义分支的起点,也就是将当前分支从一个commit移动到另一个commit作为起点。
分支上的老commit将被删除,保持了项目历史的干净。建议不要在一个公共的分支中使用rebase。
git rebase <base> # 将<base>做为当前分支的新起点, <base>可以是任何一种commit引用(如ID,branch name,tag,HEAD~N等)。
git rebase -i <base> # 交互式地将<base>做为当前分支的新起点,过程中可以对要rebase的commit做一定的修改。
"git reset"命令
用来撤销本地的修改。建议不要reset一个公共的项目历史。
主要参数:
- --soft 回退后a分支修改的代码被保留并标记为add的状态(git status 是绿色的状态)
- --mixed 重置索引,但不重置工作树,更改后的文件标记为未提交(add)的状态。默认操作。
- --hard 重置索引和工作树。
git reset # 回退版本库到上一个commit的状态, 工作区不变。
git reset <commit> # 回退版本库到指定的<commit>, 工作区不变。
git reset --hard # 回退版本库和工作区到上一次commit的状态。 --hard表明覆盖所有的修改, 而且是不可逆的, 因此使用之前要谨慎。
git reset --hard <commit> # 回退版本库和工作区到指定的<commit>。
git reset --hard origin/master # 将版本库和工作区回退到和远程的一样。
回退到上个版本:git reset --hard HEAD^ <filepathname>
git reset --hard HEAD^
git reset --hard HEAD~
回退到上上个版本:git reset --hard HEAD^^
git reset --hard HEAD~1
以此类推。
Git - 回滚与撤销的更多相关文章
- git merge 撤销与git 回滚
git merge提交后恢复 http://blog.psjay.com/posts/git-revert-merge-commit/ git回滚 https://www.jianshu.com/p/ ...
- git回滚
Git回滚的常用手法 07net01.com 发布于 4小时前 评论 传统VCS的回滚操作 对于版本控制系统VCS来说,回滚这个操作应该是个很普通也是很重要的需求. 如果你是传统VCS,比如SVN或者 ...
- Git回滚代码暴力法
Git回滚有多种方式,这里使用的是[强制提交到远程分支] 效果为:如回滚前的提交记录是 1.2.3.4,使用这种方法回滚到2,那么提交记录就变成了1.2. 操作方法: 需要在本地的Git仓库,右键选择 ...
- Git使用小技巧之回滚和撤销
想要获取更多文章可以访问我的博客 - 代码无止境. 日常的开发,我们难免会创建错误的git提交记录,整个时候git给我们提供了两个命令来解决这个问题.一个命令是git reset,另一个是git re ...
- git的回滚与撤销【reset and revert】
git的工作流程-- 3个区域 工作区:我们可以看到的文件内容 在操作 git add 之前的!! 缓存区:是不可见的 已经git add操作,还没git commit -m "" ...
- git push之后回滚(撤销)代码
问题描述:首先,先说明一下,为什么会引发这次的话题,是这样的,我做完功能Agit push之后,2个月后需求部门要求不要功能A了,然后需要在没有功能A的基础上开发,怎么办?赶紧回滚代码呀. 然后我用g ...
- git 回滚方式
git push 命用于从将本地的分支版本上传到远程并合并. 命令格式如下: git push <远程主机名> <本地分支名>:<远程分支名> 如果本地分支名与远程 ...
- git回滚错误提交
git log //找到你要回滚的那次提交 比如:43596f6b1f57157e627c25ae7a843f60157ac52d git reset --hard HEAD~43596f6b1f57 ...
- git 回滚远程服务端master的代码
1.先备份版本 git checkout master git pull git branch master_backup //备份一下这个分支当前的情况 git push origin master ...
随机推荐
- Java语法基础课 动手动脑
1.枚举类型 它的每个具体值都引用一个特定的对象.相同的值则引用同一个对象. 枚举类型不是java原有数据类型 2.为什么double类型的数值进行运算得不到“数学上精确”的结果? 我们给出的数值,在 ...
- super-smack压测工具
简介 super-smack是一款开源压测工具,支持MySQL.PostgreSQL.Oracle.本篇主要介绍一下使用super-smack压测MySQL体会. 1.SQL定义 2.数据字典定义 3 ...
- 2018.06.26 NOIP模拟 号码(数位dp)
题目背景 SOURCE:NOIP2015-GDZSJNZX(难) 题目描述 Mike 正在在忙碌地发着各种各样的的短信.旁边的同学 Tom 注意到,Mike 发出短信的接收方手机号码似乎都满足着特别的 ...
- 牛客训练三:处女座的比赛(hash打表)
题目链接:传送门 思路:由于MOD只有9983大小,所以四位小写字母的字符串组合有26+26^2+26^3+26^4=475254种组合. 所以只要每次枚举出从1到475254中的hash值对应的字符 ...
- 无法重启oracle数据库监听
一.报错 TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener Linu ...
- IntelliJ IDEA 启动 自动进入项目列表,IDE启动不进入项目,IDE启动不进入上一次的项目
1.希望IDE启动后,不进入上次使用的项目,而进入如图 2.项目很多,想着切换不方便,还得在启动打开前,点击取消,而且拖慢IDE启动的速度,所以进入这个项目列表页还是很好的. 3.设置方法 首先,任意 ...
- 在vue中使用后台提供 的token验证方式总结及使用方法
token是相对会叫安全的使用暗码形式的数据传输,由后台产生,并且传输到前台,前台可以将保存,在前台每次发送请求的时候可以携带token,后台可以对token进行验证,通过验证的通过请求可以对数据进行 ...
- win8快捷键大全分享,非常全
Windows 8全新的Metro操作体验,对于没有平板只能用快捷键来提高效率了.全面的Windows 8快捷键,请下载微软官方的Windows 8快捷键表格,快捷键全记完整个人都斯巴达了..其实常用 ...
- 第06章:MongoDB-CRUD操作--集合
①显示现有的集合 命令:show collections 或者show tables; ②创建集合 隐示 在MongoDB中,你不需要创建集合.当你插入一些文档时,MongoDB 会自动创建集合. d ...
- CYS-Sqlite数据导入工具
界面: 曹永思 下载地址:asp.net 2.0版 Sqlite数据导入工具.zip 欢迎转载,转载请注明出处,希望帮到更多人.