額,怎麼開頭呢,從文章的定位開始吧。這篇文章的目的就是定位給徹底的小白,像我這樣,對於互聯網知識不瞭解的人,可是特別渴望學習,小白文章小白文章小白文章!重要的事情說三遍,大神繞行!android
先說下環境:git
運行環境:mac os 編程工具:android studio 代碼託管平臺:開源中國git@cos
好了,先來模擬下可能須要用到這篇文章的地方。咱們的代碼都在遠程服務器託管。 不少緣由可能會致使咱們想刪掉遠程服務器上提交的版本。下面就來講下怎麼刪除,應該有不一樣的方法去實現刪除。編程
1.1假設咱們服務器上的commit記錄爲:segmentfault
commit4 commit3 commit2 commit1
咱們所提交的commit4爲你想刪除的。那應該從哪入手?
至少我用的android studio我不知道如何下手。而多數用git的人都是用的命令行控制,很顯然,咱們也要用命令行控制。具體操做:windows
1.2在哪裏輸入命令行
打開mac上的終端(windows好像也有個cmd仍是啥的吧,輸入命令行的,都同樣的)。而後多少有點開發經驗的應該都知道命令行的cd指令。在終端中,cd到你的項目目錄下。正常來講,若是你的項目是一個git項目,那麼在你的目錄下面會有個.git的隱藏文件夾。好比個人項目叫Test
,在硬盤的develop
文件夾下。在終端中輸入「cd developer/Test/
」回車,此時已經定位到你的項目下了。這時候你操做的就是當前項目的git,不會影響其餘的git庫。服務器
1.3輸入什麼?
咱們去網上看人家的教程,人家每每都直接給出"get reset --hard...
"之類的代碼,這時候咱們就能夠在當前的終端中輸入了。下面主要說一下刪除的命令行。拿上面的例子。commit4
爲你想刪除的,首先在終端中輸入"git reset --hard HEAD~1
",接下來會提示"HEAD is now at commit3"就是說你當前的代碼是commit3提交的內容。而後經過"git push --force
"命令提交到遠程庫。這裏必定要注意注意再注意!工具
注意:提交到遠程庫以後,commit4的代碼會直接從遠程庫裏面刪除。 也就是修改的記錄沒了。下面要講的,跟剛纔輸入的第一個命令"git reset --hard HEAD~1
"有關,這裏相當重要的是後面那個數字。1表明你當前在git上最新的那個版本。2,表明的是最新版本的上一個版本,以此類推。也就是當你輸入"git reset --hard HEAD~2
"的時候,會把commit3以及之後的都刪掉,也就是遠程倉庫只有commit2修改後的代碼!學習
經過上文看到,這種用法還有一點侷限性,那就是我想要只刪除中間的commit3版本,可是想保留commit4修改的內容。這種需求是沒法知足的。 命令行
該文章雖爲原創,可是裏面用到的方法是我在SegmentFault社區的一篇文章上看到的:http://segmentfault.com/a/1190000004071116
還得多謝一直支持個人大神,讓我知道如何操做git代碼!多謝!code