转!!git如何撤销上一次commit(或已push)

原博文地址 : https://www.cnblogs.com/lyy-2016/p/6509707.html

git如何撤销上一次commit操作

1.第一种情况:还没有push,只是在本地commit

git reset --soft|--mixed|--hard <commit_id>
git push develop develop --force  (本地分支和远程分支都是 develop)

这里的<commit_id>就是每次commit的SHA-1,可以在log里查看到

--mixed    会保留源码,只是将git commit和index 信息回退到了某个版本.
--soft   保留源码,只回退到commit信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
--hard    源码也会回退到某个版本,commit和index 都会回退到某个版本.(注意,这种方式是改变本地代码仓库源码)

当然有人在push代码以后,也使用 reset --hard <commit...> 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现全是冲突.....这时换下一种

2.commit push 代码已经更新到远程仓库

对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.你要用到下面的命令

git revert <commit_id>

revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新。

注意:git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit,看似达到的效果是一样的,其实完全不同。

第一:上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会.
第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.
第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

原文地址:https://www.cnblogs.com/wuyun-blog/p/10026363.html

时间: 2024-08-01 10:29:12

转!!git如何撤销上一次commit(或已push)的相关文章

git合并分支上指定的commit

merge 能够胜任平常大部分的合并需求.但也会遇到某些特殊的情况,例如正在开发一个新的功能,线上说有一个紧急的bug要修复.bug修好了但并不像把仍在开发的新功能代码也提交到线上去.这时候也许想要一个只合并指定某些 commit 的功能. 假设分支结构如下: dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master] 76cada-62ecb3-b886a0[feature] 再假设 62ecb3 的提交修复了bug,这时候可以用cherry pic

git分支合并、撤销;git修改已push的commit信息; git 撤销操作;

git分支合并 1.分支代码提交 2.git branch 查询本地分支 3.git checkout 分支名1 切换分支到需要合并的分支上 4.git merge 分支名2  //选择要合并到 分支名1 的分支名2 eg: 如果develop_screen分支合并到develop分支上,这个时候切换到develop分支上, git merge develop_screen 5.合并之后可能会有冲突,可用git status 查看冲突代码 <<<<<<<  ===

git 撤回上一次commit中某一个不想添加的文件

1. 假设我们修改了文件a,同时修改了IDE的配置文件b 2.此时我们只想添加文件a到commit中,却不小心将b也添加进去了 3.那么怎么撤回呢? 4.第一种方法: 4.1  git reset --soft HEAD~1  //将commit重置到第二个commit上 4.2  git status //查看文件状态 changes to be committed: (use "git reset HEAD <file>..." to unstage) modified

【转】如何在Git中撤销一切

翻译:李伟 审校:张帆译自:Github 任何一个版本控制系统中,最有用的特性之一莫过于 “撤销(undo)”操作.在Git中,“撤销”有很多种含义. 当你完成了一次新的提交(commit),Git会及时存储当前时刻仓库(repository)的快照(snapshot):你能够使用Git将项目回退到任何之前的版本. 下文中,我将列举几个常见的.需要“撤销”的场景,并且展示如何使用Git来完成这些操作. 一.撤销一个公共修改 Undo a "public" change 场景:你刚刚用g

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

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

Git各种撤销操作

撤销git add操作 git reset HEAD <file> # 取消add操作并保留修改 git checkout -- <file> #若继续该命令,则会删除掉刚刚的修改内容 撤销git commit操作 git reset --soft <commit_id> #可以回退到某个commit并保存之前的修改 <commit_id>从git log中取,取前7位即可 git reset --hard <commit_id> #回退到某个c

(转)git checkout 撤销修改

背景:学习git相关命令 git撤销修改和版本回退 git status查看当前仓库的状态 [email protected]:~/pad/pad-test$ git status 位于分支 master 您的分支与上游分支 'origin/master' 一致. 尚未暂存以备提交的变更: (使用 "git add <文件>..." 更新要提交的内容) (使用 "git checkout -- <文件>..." 丢弃工作区的改动) 修改: P

用Git向gitHub上传项目

用Git向gitHub上传项目 1.安装git 2.在git安装目录下,运行git-bash.exe  如图所示 3.在git中绑定你注册gitHub是的用户名.邮箱. $ git config --global user.name "gxn888"    // "gxn888"换成你的用户名$ git config --global user.email "[email protected]"    //[email protected]  换

Git?本地项目上传至托管平台(OsChina/GitHub)

为了方便自己的代码管理,通常是把自己的写的一些小项目分享到GitHub 或者git.oschina上面! 区别: GitHub 只能创建公开的项目,国外的,速度慢! git.oschina 开源中国的代码托管平台,可建私有的,国内的,速度快!一,准备工作: Git 客户端安装:下载git 客户端,并安装! 附:下载地址:git客户端 ,安装教程! 在oschina/GitHub创建账号并创建项目! 然后,就得到了远程仓库的url: https://git.oschina.net/ut2002/W