欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅析git 删除某次指定的提交问题

程序员文章站 2022-04-05 18:40:53
git 是一个分布式版本控制软件,与cvs、subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。git...

git 是一个分布式版本控制软件,与cvs、subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。

git 是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于 2005 年以 gpl 发布。最初目的是为更好地管理 linux 内核开发而设计。应注意的是,这与 gnu interactive tools 有所不同。 git 最初的开发动力来自于 bitkeeper 和 monotone。

浅析git 删除某次指定的提交问题

git 最初的开发动力来自于 bitkeeper 和 monotone。git 最初只是作为一个可以被其他前端(比如 cogito 或 stgit)包装的后端而开发的,但后来 git 内核已经成熟到可以独立地用作版本控制。很多著名的软件都使用 git 进行版本控制,其中包括 linux 内核、x.org 服务器和 olpc 内核等项目的开发流程。

主要功能

git 是用于 linux 内核开发的版本控制工具。与 cvs、subversion 一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。git 的速度很快,这对于诸如 linux 内核这样的大项目来说自然很重要。git 最为出色的是它的合并追踪(merge tracing)能力。

实际上内核开发团队决定开始开发和使用 git 来作为内核开发的版本控制系统的时候,世界上开源社群的反对声音不少,最大的理由是 git 太艰涩难懂,从 git 的内部工作机制来说,的确是这样。但是随着开发的深入,git 的正常使用都由一些友善的命令来执行,使 git 变得非常好用。现在,越来越多的著名项目采用 git 来管理项目开发,例如:wine、u-boot 等。

作为开源*原教旨主义项目,git 没有对版本库的浏览和修改做任何的权限限制,通过其他工具也可以达到有限的权限控制,比如:gitosis、codebeamer mr。原本 git 的使用范围只适用于 linux/unix 平台,但在 windows 平台下的使用也日渐成熟,这主要归功于 cygwin、msysgit 环境,以及 tortoisegit 这样易用的 gui 工具。git 的源代码中也已经加入了对 cygwin 与 mingw 编译环境的支持且逐渐完善,为 windows 用户带来福音。

重点内容

reset命令有3种方式:
1:git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息

2:git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可

3:git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

git reset只是在本地仓库中回退版本,而远程仓库的版本不会变化。
以删除master分支为例

#新建一个备份的分支,数据无价
git branch old_master

#提交本地当前的文件到新建的分支
git push origin old_master:old_master

#本地可以彻底恢复到你想恢复到的版本了
git reset --hard 58093e1355716f0f861b64f1c3dfe59242be28f7

#在web端settings页面,修改默认分支为新建的分支,可以删除远程分支了
git push origin :master

#如果出现! [remote rejected] master (deletion of the current branch prohibited),说明没有设置远程的默认分支,没有权限删除,请在web端settings页面,修改默认分支为新建的分支

#进行到这里,远程的master分支已经删除成功
#重新提交本地文件到master分支(此时会自动新建master分支)
git push origin master

#再体验一下删除分支
git push origin :old_master

到此这篇关于浅析git 删除某次指定的提交问题的文章就介绍到这了,更多相关git 删除某次指定的提交内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!