【转】git 删除commit

工作中有一次不小心提交了不该提交的代码到GIT上,而且在发现之前又提交了几个commit,现在想在GIT服务器上永久删除这个commit,具体步骤记录如下。

假设当前分支为master,当前的commit情况如下,现在需要删除commit_id_2和commit_id_4:

commit_id_1
commit_id_2
commit_id_3
commit_id_4
commit_id_5
....

一、创建新的分支,用于reset操作

git checkout -b develop
git push orign -u develop

二、在新分支develop上,将commit重置到commit_id_4之前的提交

git reset --hard <commit_id_5>

三、提交新分支,覆盖之前的commit信息

git push orign HEAD --force

四、按原有的顺序恢复不需要删除的commit,然后提交

git cherry-pick commit_id_3
git cherry-pick commit_id_1
git push orign develop

五、删除原有的master分支,从develop中checkout一个新分支作为master

git push orign --delete master
// 或者 git push orign :master
// 注意:master一般是默认分支,你需要先将默认分支设置为develop才能删除

git checkout -b master
git push orign -u master
// 最后将master重新设置为默认分支

操作比较繁琐,但是比较保险,如果有什么好方法,可以分享一下。。

参考:

Delete commits from a branch in Git

Move the most recent commit(s) to a new branch with Git

时间: 2024-11-09 14:18:57

【转】git 删除commit的相关文章

Git 删除操作

Tom 更新了自己的本地存储库并进入src目录下找到编译后的二进制.查看提交信息后,他意识到,编译后的二进制是由Jerry加入的. . [[email protected] src]$ pwd /home/tom/project/src [[email protected] src]$ ls Makefile string_operations string_operations.c [[email protected] src]$ file string_operations string_o

git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚

[git 删除本地分支] git branch -D br [git 删除远程分支] git push origin :br  (origin 后面有空格) git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id [本地代码库回滚]: git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除 git reset --hard HEAD~3:将最近3次的提交回滚 [远程代码库回滚]: 这个是重点要说的内容

Git 撤销commit的注意事项

Git撤销commit的操作命令  git reset --hard HEAD^ 一.新建三个文件,demo1,demo2,demo3 二.git add 命令提交到暂存区,git reset HEAD demo1就是把提交到暂存区里的文件撤销. 上图中,执行git reset HEAD demo1就会把demo1从暂存区中撤销,现在是untracked. 三.git commit 提交本地仓库 上图中显示,git commit把demo2,demo3提交到本地仓库中. 四.现在想撤销之前的co

git 删除与撤回

Git 删除与撤回 标签: git 版本管理 删除文件 撤回删除操作 2017年01月13日 22:56:27786人阅读 评论(0) 收藏 举报  分类: Git(4)  版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chenxiqilin/article/details/54412526 在工作区删除 我们修改文件的时候,有时也会把文件给删除掉.例如我们把test3.txt从工作区删除.  这个时候我后悔了,想找回来,怎么办?如果你还没提交

git删除本地分支和删除远程分支

引言: 切换分支的时候命令打错了,git checkout 后面没有跟分支名,结果git status,很多delete的文件,直接冒冷汗,git add ,commit 之后发现本地与远程确实是删除了很多文件,之前也有过一次,当时是从新换了一个目录重新拉代码...麻烦的很 把情况告诉了同事,给了我建议,删除这个分支,重新拉,于是开始了此操作. 具体操作: 我现在在dev20181018分支上,想删除dev20181018分支 1 先切换到别的分支: git checkout dev201809

git 删除远程分支 branch

git 删除远程分支 : git push origin :远程分支 例如删除远程分支 osc(楼主的origin是 osc): [email protected] MINGW64 ~/workspace/HelloWorld/src/selenium (master)$ git push osc :oscTo [email protected]:wuzhiyi51/selenium_learn.git - [deleted] osc git 创建分支(branch) git branch te

“Will not add file alias &#39;samefile&#39; (&#39;SameFile&#39; already exists in index)” when `git add/commit` operation

从远程仓库pull下来的代码有两个类类名首字母小写出现如下情况 然后我想删了重新写一下(就是把这个类删了,代码复制到名字正确的类里面),然后commit的时候出现这个错误,后来删一个commit一下,就可以commit,暂时估计是删了之后commit把原先index里面的清空了 "Will not add file alias 'samefile' ('SameFile' already exists in index)" when `git add/commit` operation

git 删除 repository

git 删除 repository 打开版本库,选择要删除的repository 点击Settings 找到删除选项 输入repository name,点击delet…… 删除本地仓库 执行git init命令 在本地目录下找到.git文件 删除.git 删除本地仓库目录文件 $$ MINGW32 ~ $ cd c:/PycharmProjects/test $$ MINGW32 ~/PycharmProjects/test (master) $ pwd /c/Users/china/Pych

git 删除错误提交的commit

转自:http://www.douban.com/note/189603387/ 正好遇到进阶问题.试了一下,是我要的,直接把服务器主版本还原了.不过这样也挺危险的,自己用用还可以. 方法: git reset --hard <commit_id> git push origin HEAD --force 其他: 根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:    git reset –mixed:此为默认方式,不带任何参数的git r