淺析git 刪除某次指定的提交問題
Git 是一個(gè)分布式版本控制軟件,與CVS、Subversion一類的集中式版本控制工具不同,它采用了分布式版本庫的作法,不需要服務(wù)器端軟件,就可以運(yùn)作版本控制,使得源代碼的發(fā)布和交流極其方便。
git 是一個(gè)分布式版本控制軟件,最初由林納斯·托瓦茲創(chuàng)作,于 2005 年以 GPL 發(fā)布。最初目的是為更好地管理 Linux 內(nèi)核開發(fā)而設(shè)計(jì)。應(yīng)注意的是,這與 GNU Interactive Tools 有所不同。 git 最初的開發(fā)動(dòng)力來自于 BitKeeper 和 Monotone。
git 最初的開發(fā)動(dòng)力來自于 BitKeeper 和 Monotone。git 最初只是作為一個(gè)可以被其他前端(比如 Cogito 或 Stgit)包裝的后端而開發(fā)的,但后來 git 內(nèi)核已經(jīng)成熟到可以獨(dú)立地用作版本控制。很多著名的軟件都使用 git 進(jìn)行版本控制,其中包括 Linux 內(nèi)核、X.Org 服務(wù)器和 OLPC 內(nèi)核等項(xiàng)目的開發(fā)流程。
主要功能
git 是用于 Linux 內(nèi)核開發(fā)的版本控制工具。與 CVS、Subversion 一類的集中式版本控制工具不同,它采用了分布式版本庫的作法,不需要服務(wù)器端軟件,就可以運(yùn)作版本控制,使得源代碼的發(fā)布和交流極其方便。git 的速度很快,這對于諸如 Linux 內(nèi)核這樣的大項(xiàng)目來說自然很重要。git 最為出色的是它的合并追蹤(merge tracing)能力。
實(shí)際上內(nèi)核開發(fā)團(tuán)隊(duì)決定開始開發(fā)和使用 git 來作為內(nèi)核開發(fā)的版本控制系統(tǒng)的時(shí)候,世界上開源社群的反對聲音不少,最大的理由是 git 太艱澀難懂,從 git 的內(nèi)部工作機(jī)制來說,的確是這樣。但是隨著開發(fā)的深入,git 的正常使用都由一些友善的命令來執(zhí)行,使 git 變得非常好用?,F(xiàn)在,越來越多的著名項(xiàng)目采用 git 來管理項(xiàng)目開發(fā),例如:wine、U-boot 等。
作為開源自由原教旨主義項(xiàng)目,git 沒有對版本庫的瀏覽和修改做任何的權(quán)限限制,通過其他工具也可以達(dá)到有限的權(quán)限控制,比如:gitosis、CodeBeamer MR。原本 git 的使用范圍只適用于 Linux/Unix 平臺(tái),但在 Windows 平臺(tái)下的使用也日漸成熟,這主要?dú)w功于 Cygwin、msysgit 環(huán)境,以及 TortoiseGit 這樣易用的 GUI 工具。git 的源代碼中也已經(jīng)加入了對 Cygwin 與 MinGW 編譯環(huán)境的支持且逐漸完善,為 Windows 用戶帶來福音。
重點(diǎn)內(nèi)容
reset命令有3種方式:
1:git reset –mixed:此為默認(rèn)方式,不帶任何參數(shù)的git reset,即時(shí)這種方式,它回退到某個(gè)版本,只保留源碼,回退commit和index信息
2:git reset –soft:回退到某個(gè)版本,只回退了commit的信息,不會(huì)恢復(fù)到index file一級(jí)。如果還要提交,直接commit即可
3:git reset –hard:徹底回退到某個(gè)版本,本地的源碼也會(huì)變?yōu)樯弦粋€(gè)版本的內(nèi)容
git reset只是在本地倉庫中回退版本,而遠(yuǎn)程倉庫的版本不會(huì)變化。
以刪除master分支為例
#新建一個(gè)備份的分支,數(shù)據(jù)無價(jià) git branch old_master #提交本地當(dāng)前的文件到新建的分支 git push origin old_master:old_master #本地可以徹底恢復(fù)到你想恢復(fù)到的版本了 git reset --hard 58093e1355716f0f861b64f1c3dfe59242be28f7 #在web端settings頁面,修改默認(rèn)分支為新建的分支,可以刪除遠(yuǎn)程分支了 git push origin :master #如果出現(xiàn)! [remote rejected] master (deletion of the current branch prohibited),說明沒有設(shè)置遠(yuǎn)程的默認(rèn)分支,沒有權(quán)限刪除,請?jiān)趙eb端settings頁面,修改默認(rèn)分支為新建的分支 #進(jìn)行到這里,遠(yuǎn)程的master分支已經(jīng)刪除成功 #重新提交本地文件到master分支(此時(shí)會(huì)自動(dòng)新建master分支) git push origin master #再體驗(yàn)一下刪除分支 git push origin :old_master
到此這篇關(guān)于淺析git 刪除某次指定的提交問題的文章就介紹到這了,更多相關(guān)git 刪除某次指定的提交內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
git與svn的區(qū)別及優(yōu)缺點(diǎn)說明
Git和SVN都是版本控制系統(tǒng),用于代碼管理,SVN是集中式的,需要聯(lián)網(wǎng)并且中央服務(wù)器存在單點(diǎn)故障的風(fēng)險(xiǎn),Git是分布式的,每個(gè)終端都是一個(gè)完整的倉庫,不依賴中央服務(wù)器,提高了工作的靈活性和安全性,SVN易于管理權(quán)限,但必須聯(lián)網(wǎng)工作且更新提交可能面臨沖突2024-10-10將Sublime?Text?設(shè)置成中文版的完整教程
這篇文章主要介紹了將Sublime?Text?設(shè)置成中文版的完整教程,需要自己添加之后才會(huì)有這一項(xiàng),對Sublime?Text中文版設(shè)置方法感興趣的朋友一起看看吧2022-01-01Websocket IM聊天教程 教你用GoEasy快速實(shí)現(xiàn)IM聊天
這篇文章主要介紹了Websocket IM聊天教程,小編教你用GoEasy快速實(shí)現(xiàn)IM聊天,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-05-05ASP,PHP與.NET偽造HTTP-REFERER方法及防止偽造REFERER方法探討
ASP,PHP與.NET偽造HTTP-REFERER方法及防止偽造REFERER方法探討...2007-03-03判斷Email地址是否正確的幾個(gè)函數(shù)(asp/php/javascript)
今天總結(jié)了幾個(gè)判斷Email地址的函數(shù),和大家分享一下2010-08-08使用Git Hook技術(shù)定義和校驗(yàn)代碼提交模板方式
這篇文章主要介紹了使用Git Hook技術(shù)定義和校驗(yàn)代碼提交模板方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11