Git撤销提交和修改相关操作

增补提交

git commit –C HEAD –a --amend

-C表示复用指定提交的提交留言,这个例子中是HEAD,实际上可以指定其他有效的提交名称。

如果参数是小写的-c,就会打开预先设置好的编辑器,以便在已有的提交留言基础上编辑修改。

增补提交只能针对最后一个提交,如果想更正好几个提交之前的某个错误,则须使用git revert这个命令。

反转提交

反转已经提交的改动,使用git revert命令,此命令通过在版本库中创建一个“反向的”新提交来抵消原来提交的改动。

通常Git会立即提交反转结果,但是也可以通过参数-n告诉Git先不要提交,这用于反转多个提交非常有用,运行多个git revert –n命令,Git会暂存所有的变更,然后做一次性提交。

做反转操作的时候必须提供提交名称,反转总是按照从新到旧点的倒序来操作的,即最后的提交最先反转,这样可以避免一些不必要的冲突。

复位

命令git reset可以在复位版本库后,暂存工作目录树中因复位产生的与版本库的差异,以便提交。

git reset --soft 该命令撤消上一个commit,但保留add的文件,使得Git暂存所有的因复位带来的差异,但不提交它。

之后,用户可以修改这些内容再提交,或者干脆扔掉这些内容。

选项--hard要小心使用,该选项会从版本库和工作目录树中同时删除提交,--hard就好像版本库中的删除键,并且不可恢复。

git reset是以提交名称作为参数的,默认值是HEAD,可以用^和~作为提交名称的修饰符来指定某个版本。

HEAD^是指把版本库复位到当前HEAD之前的那个节点上,把HEAD这个版本的修改扔到工作目录树中,

540ecb7~3是指要复位到540ecb7之前的三个节点上,即把该提交和之前的两个提交(共三个提交)扔到工作目录树中。

git reset --hard HEAD^ 强制复位前一个提交。

git reset HEAD可以用来清除已经add到缓存区但是不想进一步提交的内容。

另一种方式是用git rm --cached,选项--cached表明是清除缓存区,然后不动工作目录树。

注意git checkout filename将会删除该文件中所有没有暂存和提交的改动,这个操作是不可逆的。

如果不小心commit了一个不需要commit的文件,可以对其进行撤销

先使用git log 查看 commit日志


1

2

3

4

5

6

7

8

commit 422bc088a7d6c5429f1d0760d008d86c505f4abe

Author: test <test@gmail.com>

Date: Tue Sep 4 18:19:23 2015 +0800

注释-本次为错误提交

commit 8da0fd772c3acabd6e21e85287bdcfcfe8e74c85

Merge: 461ac36 0283074

Author: test <test@gmail.com>

Date: Tue Sep 4 18:16:09 2015 +0800

找到需要回退的那次commit的 哈希值,使用下面的命令进行回退:
git reset --hard commit_id

注意--hard可以把已经add的文件也删掉,谨慎使用。

时间: 2024-09-22 00:24:29

Git撤销提交和修改相关操作的相关文章

git撤销各种状态下的操作

使用Git时会出现各种各样的问题,下面是几种情况下怎么反悔的操作 一,未加入缓存区,撤销文件修改      git checkout -- file 二,已加入缓存区,撤销文件提交      git reset HEAD file      或git rm --cached file 三,已提交到本地,回滚提交      git reset --HARD commit_id/HEAD^n 四,已push到远程 1,git revert的方式       1)git revert commit_i

如何在 Git 里撤销(几乎)任何操作

任何版本控制系统的一个最有的用特性就是"撤销 (undo)"你的错误操作的能力.在 Git 里,"撤销" 蕴含了不少略有差别的功能. 当你进行一次新的提交的时候,Git 会保存你代码库在那个特定时间点的快照:之后,你可以利用 Git 返回到你的项目的一个早期版本. 在本篇博文里,我会讲解某些你需要"撤销"已做出的修改的常见场景,以及利用 Git 进行这些操作的最佳方法. 撤销一个"已公开"的改变 场景: 你已经执行了 git

merge-深入理解git的分支相关操作

问题描述 深入理解git的分支相关操作 关于merge pull cherry pick等,大家有何见解,或是什么教学视频,实例,万分感谢 解决方案 参考:http://blog.jobbole.com/25877/ 很详细. 解决方案二: git相关操作Git 标签相关操作git分支(branch)操作相关命令

git学习------&amp;gt;如何修改git已提交的记录中的Author和Email?

一.背景 最近搭建好GitLab后,准备陆陆续续的将之前在SVN仓库中保存的代码迁移到GitLab上,昨天顺利将三个Android组件的代码迁移到GitLab后,其他同事发现迁移是成功了,但是pull下来命令后查看git log 发现所有人的有些都配置成了我的邮箱,尴尬啊. GitLab上面全部变成了我的提交记录,尴尬. 二.原因分析 下面具体分析下为什么产生这个的原因. 具体原因是因为再做SVN–>Git迁移准备的时候,第一步要建议SVN用户到Git用户的映射文件.而这个映射文件最终我将所有用

jQuery学习笔记--JqGrid相关操作 方法列表 备忘 重点讲解(超重要)

JqGrid相关操作备忘 方法列表 1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选

PHPwind前台版块内相关操作

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 论坛首页: 论坛首页发表新贴 有各种分类,分类下设板块,选择一个您感兴趣的分类下的板块进入,您将看到所有帖子分页显示.新发的帖会被排在最顶;如有人回复帖子,被回复的帖子也会被排在顶端.如果你想发表帖子,可点击板块顶部右侧的"新帖".如果你只是想看看论坛里的帖子的话,那就点击你感兴趣的主题,就可进入帖子浏览主题帖及回复. 板

lightroom预设相关操作要点一览

  lightroom预设相关操作要点一览 1.点击修改图片模式; lightroom 2.查看左侧面板里面的预设; lightroom 3.我们可以移动鼠标,在导航器里面看到实时的效果; 4.如果要应用效果,只要双击鼠标即可; lightroom 5.同时我们还能对已经成型的预设进行二次的调整; lightroom 6.另外还可以再次建立只属于自己的预设方案,点击上面的小加号; lightroom 7.在设置面板里面,全选并重新命名,这样下次我们就可以再次运用这个预设的方案.

asp批量添加修改删除操作示例代码

核心代码: <title>asp批量添加修改删除操作示例</title> <% if request.Form("op")="update" then'表单提交 ids=request.Form("ids") if ids<>"" then response.Write "要删除的数据id集合:"&ids&"<br>"

《精解Windows8》——2.8 Metro应用程序相关操作

2.8 Metro应用程序相关操作 Metro应用程序和桌面程序一样,需要知道如何去关闭程序.程序间切换等操作,本节介绍使用Metro应用程序时的一些相关操作. 2.8.1 关闭Metro应用程序 由于Metro应用程序都是采用沉浸式的设计,所以在Metro应用程序本身的界面中,没有任何关闭该程序的按钮或命令.但是,微软提供了三种方式来关闭Metro应用程序,如图2-72所示 .一是通过任务管理器结束Metro应用程序进程而关闭程序.二是通过鼠标手势关闭Metro应用程序.在打开的Metro应用