1. 程式人生 > 程式設計 >淺析git 刪除某次指定的提交問題

淺析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 刪除某次指定的提交內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!