1. 程式人生 > >git的版本回退探索

git的版本回退探索

tag 取消 director alt 進行 -1 png hist cto

技術分享

簡介

今天改完代碼匆忙提交,上線發現有問題,那怎麽辦?廢話,趕緊回滾,那怎麽回滾,開始用git reset [--soft | --mixed | --hard 命令,但這命令真的能達到我預期的效果嗎? 每個參數後面的意思又是什麽?讓人一頭霧水,然後用了 reset --hard命令,並沒有達到預期的效果。現在總結下

1、git相關術語

  • HEAD

這是當前分支版本頂端的別名,也就是在當前分支你最近的一個提交

  • Index

index也被稱為staging area,是指一整套即將被下一個提交的文件集合。他也是將成為HEAD的父親的那個commit

  • Working Area

working Area代表你正在工作的那個文件集

1、沒有push

這種情況發生在你的本地代碼倉庫,可能你add ,commit 以後發現代碼有點問題,準備取消提交,用到下面命令

reset
git reset [--soft | --mixed | --hard

# --soft # 只還原 HEAD
# --mixed # 還原 HEAD、Index # 默認參數
# --hard # 還原 HEAD、Index、Working Directory

2、已經push

git revert HEAD                  #撤銷前一次 commit
git revert HEAD^                 #撤銷前前一次 commit
git revert commitId #(比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤銷指定的版本,撤銷也會作為一次提交進行保存。

git revert是提交一個新的版本,將需要revert的版本的內容再反向修改回去,

版本會遞增,不影響之前提交的內容

git revert 撤銷 某次操作,此次操作之前和之後的commit和history都會保留,並且把這次撤銷
作為一次最新的提交

2.1、example

假設按時間順序依次有commit1, commit2, commit3,commit4,對應有version1, version2, version3, version4四個狀態。現在你push了version4線上有問題,想要回退到version3狀態,只需要 執行

git revert HEAD 

註意:這樣線上的代碼還是不會變,但是本地的代碼狀態回到了 version3,你再commit5,push到線上,這樣線上的代碼就跟version3一樣了。

參考:http://blog.csdn.net/secretx/article/details/51461972

git的版本回退探索