Git回滾遠程版本

clfalh 8年前發布 | 32K 次閱讀 Git 版本控制系統

 

摘要: 原創出處:www.bysocket.com 泥瓦匠BYSocket 希望轉載,保留摘要,謝謝!

“房子是租的 但生活不是”

1.故事的開始

遠程master分支下代碼被不小心提交了很多垃圾代碼或項目刪掉,想要回滾到以前的某一版本并刪除commit log。怎么辦?情景如圖:

情景很簡單。老板上傳了個文件,我把他刪掉了。有一種辦法,把文件再push下,但是也不想他看到圖中那comment(ps:這樣我才不會被fire)。實現上面場景的代碼如下:

  1. vim A.txt
  2. git add .
  3. git commit -a -m "add A.txt"
  4. git push
  5. rm A.txt
  6. git commit -a -m "我刪除了老板的東西"
  7. git push

————–分割線 ————–

一頭霧水的小白怎么辦?怎么辦?怎么辦?

push到遠程的提交默認是不能修改的,但是一定要修改不是不行:

  1. git push -f

2.解決之道

2.1工作區,暫存區,本地版本庫 & 遠程版本庫

No pic say 個 78。。。

》》工作區:就是我們操作的目錄

》》暫存區:操作目錄的快照

》》本地版本庫:Git的精髓,人人都是中央倉庫。也就是Git分布式的好處,自然對比SVN這種集中式

》》遠程版本庫:Github這種中央倉庫,可以達到共享。

常用的操作也如圖所示,不言而喻了。

2.2 實戰解決

Talk is cheap,Show me the code or money~ 代碼如下:

  1. git log
  2. git reset --soft ${commit-id}
  3. git stash
  4. git push -f

詳解如下:

第1行: git log 查看提交歷史,然后找到要回滾的版本 。歷史如下,

  1. commit 84686b426c3a8a3d569ae56b6788278c10b27e5b
  2. Author: JeffLi1993 <qiangqiangli1993@gmail.com>
  3. Date:   Fri Apr 8 19:11:32 2016 +0800
  4.    我刪除了老板的東西
  5. commit 72bd6304c3c6e1cb7034114db1dd1b8376a6283a
  6. Author: JeffLi1993 <qiangqiangli1993@gmail.com>
  7. Date:   Fri Apr 8 19:05:23 2016 +0800
  8.    add A.txt

我們想要回滾到的版本就是:72bd6304c3c6e1cb7034114db1dd1b8376a6283a

第2行:git reset –soft 72bd6304c3c6e1cb7034114db1dd1b8376a6283a

撤銷到某個版本之前,之前的修改退回到暫存區(不懂看漂亮的圖哦~)。soft 和 hard參數的區別就是,hard修改記錄都沒了,soft則會保留修改記錄。

第3行:暫存為了安全起見。

第4行:git push -f

將本地master push 到遠程版本庫中, -f 強制覆蓋

3. 小結

git reset 回滾到某個版本之前git push -f 強制push覆蓋

歡迎點擊我的博客及GitHub — 博客提供RSS訂閱哦!

———- http://www.bysocket.com/ ————- https://github.com/JeffLi1993 ———-

微         博:BYSocket豆         瓣: BYSocket 非死book: BYSocket 推ter    : BYSocket

來自: http://www.bysocket.com/?p=926

 本文由用戶 clfalh 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!